patch-2.2.19 linux/include/linux/fs.h
Next file: linux/include/linux/hysdn_if.h
Previous file: linux/include/linux/elf.h
Back to the patch index
Back to the overall index
- Lines: 68
- Date:
Sun Mar 25 11:37:40 2001
- Orig file:
v2.2.18/include/linux/fs.h
- Orig date:
Sun Mar 25 11:28:38 2001
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.18/include/linux/fs.h linux/include/linux/fs.h
@@ -47,7 +47,12 @@
/* And dynamically-tunable limits and defaults: */
extern int max_inodes;
-extern int max_files, nr_files, nr_free_files;
+struct files_stat_struct {
+ int nr_files; /* read only */
+ int nr_free_files; /* read only */
+ int max_files; /* tunable */
+};
+extern struct files_stat_struct files_stat; /* fs/file_table.c */
extern int max_super_blocks, nr_super_blocks;
#define NR_FILE 4096 /* this can well be larger on a larger system */
@@ -185,6 +190,7 @@
#define BH_Lock 2 /* 1 if the buffer is locked */
#define BH_Req 3 /* 0 if the buffer has been invalidated */
#define BH_Protected 6 /* 1 if the buffer is protected */
+#define BH_Wait_IO 7 /* 1 if we should throttle on this buffer */
/*
* Try to keep the most commonly used fields in single cache lines (16
@@ -777,7 +783,7 @@
extern void refile_buffer(struct buffer_head * buf);
extern void set_writetime(struct buffer_head * buf, int flag);
-extern int try_to_free_buffers(struct page *, int wait);
+extern int try_to_free_buffers(struct page *, int);
extern int nr_buffers;
extern long buffermem;
@@ -786,15 +792,25 @@
#define BUF_CLEAN 0
#define BUF_LOCKED 1 /* Buffers scheduled for write */
#define BUF_DIRTY 2 /* Dirty buffers, not yet scheduled for write */
-#define NR_LIST 3
+#define BUF_PROTECTED 3 /* Ramdisk persistent storage */
+#define NR_LIST 4
void mark_buffer_uptodate(struct buffer_head * bh, int on);
+extern inline void mark_buffer_protected(struct buffer_head * bh)
+{
+ if (!test_and_set_bit(BH_Protected, &bh->b_state)) {
+ if (bh->b_list != BUF_PROTECTED)
+ refile_buffer(bh);
+ }
+}
+
extern inline void mark_buffer_clean(struct buffer_head * bh)
{
if (test_and_clear_bit(BH_Dirty, &bh->b_state)) {
if (bh->b_list == BUF_DIRTY)
refile_buffer(bh);
+ clear_bit(BH_Wait_IO, &bh->b_state);
}
}
@@ -935,6 +951,9 @@
extern void inode_setattr(struct inode *, struct iattr *);
extern __u32 inode_generation_count;
+
+#define fs_down(sem) do { current->fs_locks++; down(sem); } while (0)
+#define fs_up(sem) do { up(sem); current->fs_locks--; } while (0)
#endif /* __KERNEL__ */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)