History

block: optionally snapshot page contents to provide stable pages during write

This provides a band-aid to provide stable page writes on jbd without needing to backport the fixed locking and page writeback bit handling schemes of jbd2. The band-aid works by using bounce buffers to snapshot page contents instead of waiting. For those wondering about the ext3 bandage -- fixing the jbd locking (which was done as part of ext4dev years ago) is a lot of surgery, and setting PG_writeback on data pages when we actually hold the page lock dropped ext3 performance by nearly an order of magnitude. If we're going to migrate iscsi and raid to use stable page writes, the complaints about high latency will likely return. We might as well centralize their page snapshotting thing to one place.

Darrick J. Wong committed 13 years ago

Commit ffecfd11 parent 13575ca7 files · +70 −13Browse files

Showing the changes to include/uapi (1 of 7 files). Show all

Unified · Split

include/uapi/linux/fs.h+3−0
@@ -86,6 +86,9 @@ struct inodes_stat_t { · 85 unmodified lines
86#define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */86#define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */
87#define MS_I_VERSION (1<<23) /* Update inode I_version field */87#define MS_I_VERSION (1<<23) /* Update inode I_version field */
88#define MS_STRICTATIME (1<<24) /* Always perform atime updates */88#define MS_STRICTATIME (1<<24) /* Always perform atime updates */
89
90/* These sb flags are internal to the kernel */
91#define MS_SNAP_STABLE (1<<27) /* Snapshot pages during writeback, if needed */
89#define MS_NOSEC (1<<28)92#define MS_NOSEC (1<<28)
90#define MS_BORN (1<<29)93#define MS_BORN (1<<29)
91#define MS_ACTIVE (1<<30)94#define MS_ACTIVE (1<<30)