afs/fs/cachefs super.c,1.39,1.40 journal.c,1.44,1.45
dwh at infradead.org
dwh at infradead.org
Mon Sep 15 20:00:22 BST 2003
- Previous message: afs/fs/cachefs vjournal.c,1.6,1.7 super.c,1.38,1.39
replay.c,1.7,1.8 recycling.c,1.31,1.32 journal.c,1.43,1.44
cachefs-int.h,1.42,1.43 block.c,1.10,1.11 aops.c,1.48,1.49
- Next message: afs/fs/cachefs replay.c,1.8,1.9
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/afs/fs/cachefs
In directory phoenix.infradead.org:/tmp/cvs-serv1999/fs/cachefs
Modified Files:
super.c journal.c
Log Message:
add sync_fs() support
Index: super.c
===================================================================
RCS file: /home/cvs/afs/fs/cachefs/super.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- super.c 15 Sep 2003 13:53:25 -0000 1.39
+++ super.c 15 Sep 2003 18:00:19 -0000 1.40
@@ -36,6 +36,7 @@
static int cachefs_fill_super(struct super_block *sb, void *_data, int silent);
static int cachefs_initialise_blockdev(struct cachefs_super *super);
static int cachefs_statfs(struct super_block *sb, struct kstatfs *buf);
+static int cachefs_sync_fs(struct super_block *sb, int wait);
static void cachefs_write_super(struct super_block *sb);
static void cachefs_put_super(struct super_block *sb);
@@ -51,6 +52,7 @@
.statfs = cachefs_statfs,
.alloc_inode = cachefs_alloc_inode,
.write_inode = cachefs_write_inode,
+ .sync_fs = cachefs_sync_fs,
.destroy_inode = cachefs_destroy_inode,
.clear_inode = cachefs_clear_inode,
.write_super = cachefs_write_super,
@@ -688,6 +690,24 @@
return 0;
} /* end cachefs_statfs() */
+
+/*****************************************************************************/
+/*
+ * synchronise the filesystem to disc
+ */
+static int cachefs_sync_fs(struct super_block *sb, int wait)
+{
+ struct cachefs_super *super = sb->s_fs_info;
+
+ _enter(",%d", wait);
+
+ cachefs_trans_sync(super,
+ wait ? CACHEFS_TRANS_SYNC_WAIT_FOR_ACK :
+ CACHEFS_TRANS_SYNC_NOWAIT);
+
+ _leave(" = 0");
+ return 0;
+} /* end cachefs_sync_fs() */
/*****************************************************************************/
/*
Index: journal.c
===================================================================
RCS file: /home/cvs/afs/fs/cachefs/journal.c,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- journal.c 15 Sep 2003 13:53:25 -0000 1.44
+++ journal.c 15 Sep 2003 18:00:19 -0000 1.45
@@ -653,6 +653,9 @@
* out */
down_write(&super->batch_ctrl_sem);
+ if (list_empty(&super->ujnl_commitq))
+ goto nothing_to_do;
+
BUG_ON(!list_empty(&super->ujnl_markq));
list_for_each_entry(trans, &super->ujnl_commitq, sblink) {
@@ -736,11 +739,18 @@
cachefs_trans_put(trans);
}
+ done:
up(&super->batch_sem);
wake_up_all(&super->batch_sync_wq);
_leave("");
+ return;
+
+ nothing_to_do:
+ up(&super->batch_uj_sem);
+ up_write(&super->batch_ctrl_sem);
+ goto done;
} /* end cachefs_trans_batch_write() */
/*****************************************************************************/
@@ -1413,14 +1423,15 @@
DECLARE_WAITQUEUE(myself, current);
- kenter("{batch=%hd},%d", super->ujnl_batch, wait);
+ _enter("{batch=%hd ser=%hu},%d",
+ super->ujnl_batch, super->ujnl_serial, wait);
/* if we're not supposed to wait, just induce consideration of a batch
* write */
if (wait == CACHEFS_TRANS_SYNC_NOWAIT) {
set_bit(CACHEFS_SUPER_BATCH_TIMER, &super->flags);
wake_up_all(&super->batch_timer_wq);
- kleave("");
+ _leave("");
return;
}
@@ -1428,7 +1439,7 @@
* sync ends */
down_write(&super->batch_ctrl_sem);
- if (super->ujnl_serial == 0) {
+ if (list_empty(&super->ujnl_commitq)) {
/* no pending transactions */
up_write(&super->batch_ctrl_sem);
}
@@ -1455,7 +1466,8 @@
set_current_state(TASK_RUNNING);
}
- /* now we have to wait for any currently active batch write */
+ /* now we have to wait for any currently active batch write to
+ * (partially) complete */
if (wait == CACHEFS_TRANS_SYNC_WAIT_FOR_MARK) {
down(&super->batch_uj_sem);
up(&super->batch_uj_sem);
@@ -1465,5 +1477,5 @@
up(&super->batch_sem);
}
- kleave("");
+ _leave("");
} /* end cachefs_trans_sync() */
- Previous message: afs/fs/cachefs vjournal.c,1.6,1.7 super.c,1.38,1.39
replay.c,1.7,1.8 recycling.c,1.31,1.32 journal.c,1.43,1.44
cachefs-int.h,1.42,1.43 block.c,1.10,1.11 aops.c,1.48,1.49
- Next message: afs/fs/cachefs replay.c,1.8,1.9
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the linux-afs-cvs
mailing list