Skip to content

Commit

Permalink
ocfs2: make append_dio an incompat feature
Browse files Browse the repository at this point in the history
It turns out that making this feature ro_compat isn't quite enough to
prevent accidental corruption on mount from older kernels.  Ocfs2 (like
other file systems) will process orphaned inodes even when the user mounts
in 'ro' mode.  So for the case of a filesystem not knowing the append_dio
feature, mounting the filesystem could result in orphaned-for-dio files
being deleted, which we clearly don't want.

So instead, turn this into an incompat flag.

Btw, this is kind of my fault - initially I asked that we add a flag to
cover the feature and even suggested that we use an ro flag.  It wasn't
until I was looking through our commits for v4.0-rc1 that I realized we
actually want this to be incompat.

Signed-off-by: Mark Fasheh <[email protected]>
Cc: Joseph Qi <[email protected]>
Cc: Joel Becker <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Mark Fasheh authored and torvalds committed Mar 13, 2015
1 parent 09d3591 commit 18d585f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
2 changes: 1 addition & 1 deletion fs/ocfs2/ocfs2.h
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ static inline int ocfs2_writes_unwritten_extents(struct ocfs2_super *osb)

static inline int ocfs2_supports_append_dio(struct ocfs2_super *osb)
{
if (osb->s_feature_ro_compat & OCFS2_FEATURE_RO_COMPAT_APPEND_DIO)
if (osb->s_feature_incompat & OCFS2_FEATURE_INCOMPAT_APPEND_DIO)
return 1;
return 0;
}
Expand Down
15 changes: 8 additions & 7 deletions fs/ocfs2/ocfs2_fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,11 @@
| OCFS2_FEATURE_INCOMPAT_INDEXED_DIRS \
| OCFS2_FEATURE_INCOMPAT_REFCOUNT_TREE \
| OCFS2_FEATURE_INCOMPAT_DISCONTIG_BG \
| OCFS2_FEATURE_INCOMPAT_CLUSTERINFO)
| OCFS2_FEATURE_INCOMPAT_CLUSTERINFO \
| OCFS2_FEATURE_INCOMPAT_APPEND_DIO)
#define OCFS2_FEATURE_RO_COMPAT_SUPP (OCFS2_FEATURE_RO_COMPAT_UNWRITTEN \
| OCFS2_FEATURE_RO_COMPAT_USRQUOTA \
| OCFS2_FEATURE_RO_COMPAT_GRPQUOTA \
| OCFS2_FEATURE_RO_COMPAT_APPEND_DIO)
| OCFS2_FEATURE_RO_COMPAT_GRPQUOTA)

/*
* Heartbeat-only devices are missing journals and other files. The
Expand Down Expand Up @@ -178,6 +178,11 @@
*/
#define OCFS2_FEATURE_INCOMPAT_CLUSTERINFO 0x4000

/*
* Append Direct IO support
*/
#define OCFS2_FEATURE_INCOMPAT_APPEND_DIO 0x8000

/*
* backup superblock flag is used to indicate that this volume
* has backup superblocks.
Expand All @@ -200,10 +205,6 @@
#define OCFS2_FEATURE_RO_COMPAT_USRQUOTA 0x0002
#define OCFS2_FEATURE_RO_COMPAT_GRPQUOTA 0x0004

/*
* Append Direct IO support
*/
#define OCFS2_FEATURE_RO_COMPAT_APPEND_DIO 0x0008

/* The byte offset of the first backup block will be 1G.
* The following will be 4G, 16G, 64G, 256G and 1T.
Expand Down

0 comments on commit 18d585f

Please sign in to comment.