Skip to contentSkip to conversation

xfs: deprecate barrier/nobarrier

RFC PATCH In review Dave Chinner 4 participants 11 messages Nov 30, 2016 – Dec 5, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover xfs: deprecate barrier/nobarrier

Hi folks,

In response to the recent conversation here:

https://www.spinics.net/lists/linux-xfs/msg02501.html

I've come to the conclusion that barrier/nobarrier mount options no longer make sense to maintain. There is no performance penalty for the vast majority of users to enabling barriersand it's been the default behaviour for a long time. And given the misunderstanding that users have over what barriers are and when it is safe to turn them off, it seems to me like the best solution is to simply remove the option altogther.

Comments, thoughts, flames all welcome.

-Dave.

#1 lore raw

PATCH 1/2 xfs: Always flush caches when integrity is required

From: Dave Chinner <[email protected]>

There is no reason anymore for not issuing device integrity operations when teh filesystem requires ordering or data integrity guarantees. We should always issue cache flushes and FUA writes where necessary and let the underlying storage optimise them as necessary for correct integrity operation.

---
 fs/xfs/xfs_buf.c  |  3 +--
 fs/xfs/xfs_file.c | 29 ++++++++++++-----------------
 fs/xfs/xfs_log.c  | 36 +++++++++++++++---------------------
 3 files changed, 28 insertions(+), 40 deletions(-)
fs/xfs/xfs_buf.c +1 -2
index a2f0648743db..1264908ef8f2 100644
@@ -1738,8 +1738,7 @@ xfs_free_buftarg(
 	percpu_counter_destroy(&btp->bt_io_count);
 	list_lru_destroy(&btp->bt_lru);
 
-	if (mp->m_flags & XFS_MOUNT_BARRIER)
-		xfs_blkdev_issue_flush(btp);
+	xfs_blkdev_issue_flush(btp);
 
 	kmem_free(btp);
 }
fs/xfs/xfs_file.c +12 -17
index f5effa68e037..2951c483b24b 100644
@@ -149,19 +149,16 @@ xfs_file_fsync(
 
 	xfs_iflags_clear(ip, XFS_ITRUNCATED);
 
-	if (mp->m_flags & XFS_MOUNT_BARRIER) {
-		/*
-		 * If we have an RT and/or log subvolume we need to make sure
-		 * to flush the write cache the device used for file data
-		 * first.  This is to ensure newly written file data make
-		 * it to disk before logging the new inode size in case of
-		 * an extending write.
-		 */
-		if (XFS_IS_REALTIME_INODE(ip))
-			xfs_blkdev_issue_flush(mp->m_rtdev_targp);
-		else if (mp->m_logdev_targp != mp->m_ddev_targp)
-			xfs_blkdev_issue_flush(mp->m_ddev_targp);
-	}
+	/*
+	 * If we have an RT and/or log subvolume we need to make sure to flush
+	 * the write cache the device used for file data first.  This is to
+	 * ensure newly written file data make it to disk before logging the new
+	 * inode size in case of an extending write.
+	 */
+	if (XFS_IS_REALTIME_INODE(ip))
+		xfs_blkdev_issue_flush(mp->m_rtdev_targp);
+	else if (mp->m_logdev_targp != mp->m_ddev_targp)
+		xfs_blkdev_issue_flush(mp->m_ddev_targp);
 
 	/*
 	 * All metadata updates are logged, which means that we just have to
@@ -196,10 +193,8 @@ xfs_file_fsync(
 	 * an already allocated file and thus do not have any metadata to
 	 * commit.
 	 */
-	if ((mp->m_flags & XFS_MOUNT_BARRIER) &&
-	    mp->m_logdev_targp == mp->m_ddev_targp &&
-	    !XFS_IS_REALTIME_INODE(ip) &&
-	    !log_flushed)
+	if (!log_flushed && !XFS_IS_REALTIME_INODE(ip) &&
+	    mp->m_logdev_targp == mp->m_ddev_targp)
 		xfs_blkdev_issue_flush(mp->m_ddev_targp);
 
 	return error;
fs/xfs/xfs_log.c +15 -21
index 3ebe444eb60f..573d0841851d 100644
@@ -1863,25 +1863,21 @@ xlog_sync(
 	bp->b_io_length = BTOBB(count);
 	bp->b_fspriv = iclog;
 	bp->b_flags &= ~(XBF_FUA | XBF_FLUSH);
-	bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE);
+	bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE | XBF_FUA);
 
-	if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) {
-		bp->b_flags |= XBF_FUA;
-
-		/*
-		 * Flush the data device before flushing the log to make
-		 * sure all meta data written back from the AIL actually made
-		 * it to disk before stamping the new log tail LSN into the
-		 * log buffer.  For an external log we need to issue the
-		 * flush explicitly, and unfortunately synchronously here;
-		 * for an internal log we can simply use the block layer
-		 * state machine for preflushes.
-		 */
-		if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp)
-			xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp);
-		else
-			bp->b_flags |= XBF_FLUSH;
-	}
+	/*
+	 * Flush the data device before flushing the log to make
+	 * sure all meta data written back from the AIL actually made
+	 * it to disk before stamping the new log tail LSN into the
+	 * log buffer.  For an external log we need to issue the
+	 * flush explicitly, and unfortunately synchronously here;
+	 * for an internal log we can simply use the block layer
+	 * state machine for preflushes.
+	 */
+	if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp)
+		xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp);
+	else
+		bp->b_flags |= XBF_FLUSH;
 
 	ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1);
 	ASSERT(XFS_BUF_ADDR(bp) + BTOBB(count) <= log->l_logBBsize);
@@ -1907,9 +1903,7 @@ xlog_sync(
 				(char *)&iclog->ic_header + count, split);
 		bp->b_fspriv = iclog;
 		bp->b_flags &= ~(XBF_FUA | XBF_FLUSH);
-		bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE);
-		if (log->l_mp->m_flags & XFS_MOUNT_BARRIER)
-			bp->b_flags |= XBF_FUA;
+		bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE | XBF_FUA);
 
 		ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1);
 		ASSERT(XFS_BUF_ADDR(bp) + BTOBB(count) <= log->l_logBBsize);
Signature · 1 line
2.10.2
#2 lore raw

Re: [PATCH 1/2] xfs: Always flush caches when integrity is required

Quoted 10 lines · Dave Chinner

From: Dave Chinner <[email protected]>

There is no reason anymore for not issuing device integrity operations when teh filesystem requires ordering or data integrity guarantees. We should always issue cache flushes and FUA writes where necessary and let the underlying storage optimise them as necessary for correct integrity operation.

---

Seems reasonable to me. Just a few nits below..

Quoted 71 lines
 fs/xfs/xfs_buf.c  |  3 +--
 fs/xfs/xfs_file.c | 29 ++++++++++++-----------------
 fs/xfs/xfs_log.c  | 36 +++++++++++++++---------------------
 3 files changed, 28 insertions(+), 40 deletions(-)
fs/xfs/xfs_buf.c +1 -2
index a2f0648743db..1264908ef8f2 100644
@@ -1738,8 +1738,7 @@ xfs_free_buftarg(
 	percpu_counter_destroy(&btp->bt_io_count);
 	list_lru_destroy(&btp->bt_lru);
 
-	if (mp->m_flags & XFS_MOUNT_BARRIER)
-		xfs_blkdev_issue_flush(btp);
+	xfs_blkdev_issue_flush(btp);
 
 	kmem_free(btp);
 }
fs/xfs/xfs_file.c +12 -17
index f5effa68e037..2951c483b24b 100644
@@ -149,19 +149,16 @@ xfs_file_fsync(
 
 	xfs_iflags_clear(ip, XFS_ITRUNCATED);
 
-	if (mp->m_flags & XFS_MOUNT_BARRIER) {
-		/*
-		 * If we have an RT and/or log subvolume we need to make sure
-		 * to flush the write cache the device used for file data
-		 * first.  This is to ensure newly written file data make
-		 * it to disk before logging the new inode size in case of
-		 * an extending write.
-		 */
-		if (XFS_IS_REALTIME_INODE(ip))
-			xfs_blkdev_issue_flush(mp->m_rtdev_targp);
-		else if (mp->m_logdev_targp != mp->m_ddev_targp)
-			xfs_blkdev_issue_flush(mp->m_ddev_targp);
-	}
+	/*
+	 * If we have an RT and/or log subvolume we need to make sure to flush
+	 * the write cache the device used for file data first.  This is to
+	 * ensure newly written file data make it to disk before logging the new
+	 * inode size in case of an extending write.
+	 */
+	if (XFS_IS_REALTIME_INODE(ip))
+		xfs_blkdev_issue_flush(mp->m_rtdev_targp);
+	else if (mp->m_logdev_targp != mp->m_ddev_targp)
+		xfs_blkdev_issue_flush(mp->m_ddev_targp);
 
 	/*
 	 * All metadata updates are logged, which means that we just have to
@@ -196,10 +193,8 @@ xfs_file_fsync(
 	 * an already allocated file and thus do not have any metadata to
 	 * commit.
 	 */
-	if ((mp->m_flags & XFS_MOUNT_BARRIER) &&
-	    mp->m_logdev_targp == mp->m_ddev_targp &&
-	    !XFS_IS_REALTIME_INODE(ip) &&
-	    !log_flushed)
+	if (!log_flushed && !XFS_IS_REALTIME_INODE(ip) &&
+	    mp->m_logdev_targp == mp->m_ddev_targp)
 		xfs_blkdev_issue_flush(mp->m_ddev_targp);
 
 	return error;
fs/xfs/xfs_log.c +0 -0
index 3ebe444eb60f..573d0841851d 100644

fs/xfs/xfs_log.c xlog_sync( · line 1866

Quoted 5 lines
fs/xfs/xfs_log.c +1 -1
@@ -1863,25 +1863,21 @@ xlog_sync(
 	bp->b_io_length = BTOBB(count);
 	bp->b_fspriv = iclog;
 	bp->b_flags &= ~(XBF_FUA | XBF_FLUSH);
-	bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE);
+	bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE | XBF_FUA);

There's no need to clear XBF_FUA on the line above any longer.

Quoted 17 lines
fs/xfs/xfs_log.c +0 -16
-	if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) {
-		bp->b_flags |= XBF_FUA;
-
-		/*
-		 * Flush the data device before flushing the log to make
-		 * sure all meta data written back from the AIL actually made
-		 * it to disk before stamping the new log tail LSN into the
-		 * log buffer.  For an external log we need to issue the
-		 * flush explicitly, and unfortunately synchronously here;
-		 * for an internal log we can simply use the block layer
-		 * state machine for preflushes.
-		 */
-		if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp)
-			xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp);
-		else
-			bp->b_flags |= XBF_FLUSH;

fs/xfs/xfs_log.c xlog_sync( · line 1876

Quoted 10 lines
fs/xfs/xfs_log.c +9 -1
-	}
+	/*
+	 * Flush the data device before flushing the log to make
+	 * sure all meta data written back from the AIL actually made
+	 * it to disk before stamping the new log tail LSN into the
+	 * log buffer.  For an external log we need to issue the
+	 * flush explicitly, and unfortunately synchronously here;
+	 * for an internal log we can simply use the block layer
+	 * state machine for preflushes.
+	 */

Comment can be rewrapped.

fs/xfs/xfs_log.c xlog_sync( · line 1905

Quoted 11 lines
fs/xfs/xfs_log.c +4 -0
+	if (log->l_mp->m_logdev_targp != log->l_mp->m_ddev_targp)
+		xfs_blkdev_issue_flush(log->l_mp->m_ddev_targp);
+	else
+		bp->b_flags |= XBF_FLUSH;
 
 	ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1);
 	ASSERT(XFS_BUF_ADDR(bp) + BTOBB(count) <= log->l_logBBsize);
@@ -1907,9 +1903,7 @@ xlog_sync(
 				(char *)&iclog->ic_header + count, split);
 		bp->b_fspriv = iclog;
 		bp->b_flags &= ~(XBF_FUA | XBF_FLUSH);

No need to clear XBF_FUA here as well.

Brian

Quoted 14 lines
fs/xfs/xfs_log.c +1 -3
-		bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE);
-		if (log->l_mp->m_flags & XFS_MOUNT_BARRIER)
-			bp->b_flags |= XBF_FUA;
+		bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE | XBF_FUA);
 
 		ASSERT(XFS_BUF_ADDR(bp) <= log->l_logBBsize-1);
 		ASSERT(XFS_BUF_ADDR(bp) + BTOBB(count) <= log->l_logBBsize);
Signature · 6 lines
2.10.2

--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reviewed-by on v1 1/2
#3 lore raw

Re: [PATCH 1/2] xfs: Always flush caches when integrity is required

In reply to Dave Chinner
Quoted 9 lines · Dave Chinner

From: Dave Chinner <[email protected]>

There is no reason anymore for not issuing device integrity operations when teh filesystem requires ordering or data integrity guarantees. We should always issue cache flushes and FUA writes where necessary and let the underlying storage optimise them as necessary for correct integrity operation.

Looks fine,

#4 lore raw

PATCH 2/2 xfs: deprecate barrier/nobarrier mount option

In reply to Dave Chinner

From: Dave Chinner <[email protected]>

We always perform integrity operations now, so these mount options don't do anything. Deprecate them and mark them for removal in in a year.

---
 Documentation/filesystems/xfs.txt | 12 ++++--------
 fs/xfs/xfs_super.c                | 25 ++++++++++++++++---------
 2 files changed, 20 insertions(+), 17 deletions(-)
Documentation/filesystems/xfs.txt +4 -8
index c2d44e6e117b..68a057c8fccf 100644
@@ -51,13 +51,6 @@ default behaviour.
 	CRC enabled filesystems always use the attr2 format, and so
 	will reject the noattr2 mount option if it is set.
 
-  barrier (*)
-  nobarrier
-	Enables/disables the use of block layer write barriers for
-	writes into the journal and for data integrity operations.
-	This allows for drive level write caching to be enabled, for
-	devices that support write barriers.
-
   discard
   nodiscard (*)
 	Enable/disable the issuing of commands to let the block
@@ -228,7 +221,10 @@ default behaviour.
 Deprecated Mount Options
 ========================
 
-None at present.
+  Name				Removal Schedule
+  ----				----------------
+  barrier			December 2017
+  nobarrier			December 2017
 
 
 Removed Mount Options
fs/xfs/xfs_super.c +16 -9
index 563d1d146b8c..eecbaac08eba 100644
@@ -104,9 +104,6 @@ static const match_table_t tokens = {
 	{Opt_sysvgroups,"sysvgroups"},	/* group-ID from current process */
 	{Opt_allocsize,	"allocsize=%s"},/* preferred allocation size */
 	{Opt_norecovery,"norecovery"},	/* don't run XFS recovery */
-	{Opt_barrier,	"barrier"},	/* use writer barriers for log write and
-					 * unwritten extent conversion */
-	{Opt_nobarrier,	"nobarrier"},	/* .. disable */
 	{Opt_inode64,	"inode64"},	/* inodes can be allocated anywhere */
 	{Opt_inode32,   "inode32"},	/* inode allocation limited to
 					 * XFS_MAXINUMBER_32 */
@@ -134,6 +131,12 @@ static const match_table_t tokens = {
 	{Opt_nodiscard,	"nodiscard"},	/* Do not discard unused blocks */
 
 	{Opt_dax,	"dax"},		/* Enable direct access to bdev pages */
+
+	/* Deprecated mount options scheduled for removal */
+	{Opt_barrier,	"barrier"},	/* use writer barriers for log write and
+					 * unwritten extent conversion */
+	{Opt_nobarrier,	"nobarrier"},	/* .. disable */
+
 	{Opt_err,	NULL},
 };
 
@@ -301,12 +304,6 @@ xfs_parseargs(
 		case Opt_nouuid:
 			mp->m_flags |= XFS_MOUNT_NOUUID;
 			break;
-		case Opt_barrier:
-			mp->m_flags |= XFS_MOUNT_BARRIER;
-			break;
-		case Opt_nobarrier:
-			mp->m_flags &= ~XFS_MOUNT_BARRIER;
-			break;
 		case Opt_ikeep:
 			mp->m_flags |= XFS_MOUNT_IKEEP;
 			break;
@@ -374,6 +371,14 @@ xfs_parseargs(
 			mp->m_flags |= XFS_MOUNT_DAX;
 			break;
 #endif
+		case Opt_barrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags |= XFS_MOUNT_BARRIER;
+			break;
+		case Opt_nobarrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags &= ~XFS_MOUNT_BARRIER;
+			break;
 		default:
 			xfs_warn(mp, "unknown mount option [%s].", p);
 			return -EINVAL;
@@ -1238,9 +1243,11 @@ xfs_fs_remount(
 		token = match_token(p, tokens, args);
 		switch (token) {
 		case Opt_barrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
 			mp->m_flags |= XFS_MOUNT_BARRIER;
 			break;
 		case Opt_nobarrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
 			mp->m_flags &= ~XFS_MOUNT_BARRIER;
 			break;
 		case Opt_inode64:
Signature · 1 line
2.10.2
#5 lore raw

Re: [PATCH 2/2] xfs: deprecate barrier/nobarrier mount option

Quoted 7 lines · Dave Chinner

From: Dave Chinner <[email protected]>

We always perform integrity operations now, so these mount options don't do anything. Deprecate them and mark them for removal in in a year.

We use 'nobarrier' mount option to simulate disks with battery-backed caches in some of our IO performance testing. I don't say we cannot live with this mount option but it was convenient...

Honza

Quoted 109 lines
---
 Documentation/filesystems/xfs.txt | 12 ++++--------
 fs/xfs/xfs_super.c                | 25 ++++++++++++++++---------
 2 files changed, 20 insertions(+), 17 deletions(-)
Documentation/filesystems/xfs.txt +4 -8
index c2d44e6e117b..68a057c8fccf 100644
@@ -51,13 +51,6 @@ default behaviour.
 	CRC enabled filesystems always use the attr2 format, and so
 	will reject the noattr2 mount option if it is set.
 
-  barrier (*)
-  nobarrier
-	Enables/disables the use of block layer write barriers for
-	writes into the journal and for data integrity operations.
-	This allows for drive level write caching to be enabled, for
-	devices that support write barriers.
-
   discard
   nodiscard (*)
 	Enable/disable the issuing of commands to let the block
@@ -228,7 +221,10 @@ default behaviour.
 Deprecated Mount Options
 ========================
 
-None at present.
+  Name				Removal Schedule
+  ----				----------------
+  barrier			December 2017
+  nobarrier			December 2017
 
 
 Removed Mount Options
fs/xfs/xfs_super.c +16 -9
index 563d1d146b8c..eecbaac08eba 100644
@@ -104,9 +104,6 @@ static const match_table_t tokens = {
 	{Opt_sysvgroups,"sysvgroups"},	/* group-ID from current process */
 	{Opt_allocsize,	"allocsize=%s"},/* preferred allocation size */
 	{Opt_norecovery,"norecovery"},	/* don't run XFS recovery */
-	{Opt_barrier,	"barrier"},	/* use writer barriers for log write and
-					 * unwritten extent conversion */
-	{Opt_nobarrier,	"nobarrier"},	/* .. disable */
 	{Opt_inode64,	"inode64"},	/* inodes can be allocated anywhere */
 	{Opt_inode32,   "inode32"},	/* inode allocation limited to
 					 * XFS_MAXINUMBER_32 */
@@ -134,6 +131,12 @@ static const match_table_t tokens = {
 	{Opt_nodiscard,	"nodiscard"},	/* Do not discard unused blocks */
 
 	{Opt_dax,	"dax"},		/* Enable direct access to bdev pages */
+
+	/* Deprecated mount options scheduled for removal */
+	{Opt_barrier,	"barrier"},	/* use writer barriers for log write and
+					 * unwritten extent conversion */
+	{Opt_nobarrier,	"nobarrier"},	/* .. disable */
+
 	{Opt_err,	NULL},
 };
 
@@ -301,12 +304,6 @@ xfs_parseargs(
 		case Opt_nouuid:
 			mp->m_flags |= XFS_MOUNT_NOUUID;
 			break;
-		case Opt_barrier:
-			mp->m_flags |= XFS_MOUNT_BARRIER;
-			break;
-		case Opt_nobarrier:
-			mp->m_flags &= ~XFS_MOUNT_BARRIER;
-			break;
 		case Opt_ikeep:
 			mp->m_flags |= XFS_MOUNT_IKEEP;
 			break;
@@ -374,6 +371,14 @@ xfs_parseargs(
 			mp->m_flags |= XFS_MOUNT_DAX;
 			break;
 #endif
+		case Opt_barrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags |= XFS_MOUNT_BARRIER;
+			break;
+		case Opt_nobarrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags &= ~XFS_MOUNT_BARRIER;
+			break;
 		default:
 			xfs_warn(mp, "unknown mount option [%s].", p);
 			return -EINVAL;
@@ -1238,9 +1243,11 @@ xfs_fs_remount(
 		token = match_token(p, tokens, args);
 		switch (token) {
 		case Opt_barrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
 			mp->m_flags |= XFS_MOUNT_BARRIER;
 			break;
 		case Opt_nobarrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
 			mp->m_flags &= ~XFS_MOUNT_BARRIER;
 			break;
 		case Opt_inode64:
Signature · 6 lines
2.10.2

--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Signature · 2 lines
Jan Kara <[email protected]>
SUSE Labs, CR
#6 lore raw

Re: [PATCH 2/2] xfs: deprecate barrier/nobarrier mount option

Quoted 7 lines · Jan Kara
Quoted 6 lines · Dave Chinner

From: Dave Chinner <[email protected]>

We always perform integrity operations now, so these mount options don't do anything. Deprecate them and mark them for removal in in a year.

Quoted 5 lines
Quoted 1 line

We use 'nobarrier' mount option to simulate disks with battery-backed caches in some of our IO performance testing. I don't say we cannot live with this mount option but it was convenient...

FYI, for scsi (and thus ATA as well) you can override the cache type using the cache_type sysfs file, which is a much better interface for this than anything file system related.

#7 lore raw

Re: [PATCH 2/2] xfs: deprecate barrier/nobarrier mount option

In reply to Dave Chinner
Quoted 12 lines · Dave Chinner

From: Dave Chinner <[email protected]>

We always perform integrity operations now, so these mount options don't do anything. Deprecate them and mark them for removal in in a year.

---
 Documentation/filesystems/xfs.txt | 12 ++++--------
 fs/xfs/xfs_super.c                | 25 ++++++++++++++++---------
 2 files changed, 20 insertions(+), 17 deletions(-)

...

Quoted 4 lines
fs/xfs/xfs_super.c +0 -0
index 563d1d146b8c..eecbaac08eba 100644

...

fs/xfs/xfs_super.c xfs_parseargs( · line 381

Quoted 12 lines
fs/xfs/xfs_super.c +8 -0
@@ -374,6 +371,14 @@ xfs_parseargs(
 			mp->m_flags |= XFS_MOUNT_DAX;
 			break;
 #endif
+		case Opt_barrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags |= XFS_MOUNT_BARRIER;
+			break;
+		case Opt_nobarrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags &= ~XFS_MOUNT_BARRIER;
+			break;

So basically XFS_MOUNT_BARRIER exists solely for the purpose of showargs. Should we just kill it too and do something deterministic on showargs (i.e., always show 'barrier' or just drop it entirely), or does precedent suggest otherwise?

That aside, this all seems Ok to me.

Brian

Quoted 22 lines
fs/xfs/xfs_super.c +2 -0
 		default:
 			xfs_warn(mp, "unknown mount option [%s].", p);
 			return -EINVAL;
@@ -1238,9 +1243,11 @@ xfs_fs_remount(
 		token = match_token(p, tokens, args);
 		switch (token) {
 		case Opt_barrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
 			mp->m_flags |= XFS_MOUNT_BARRIER;
 			break;
 		case Opt_nobarrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
 			mp->m_flags &= ~XFS_MOUNT_BARRIER;
 			break;
 		case Opt_inode64:
Signature · 6 lines
2.10.2

--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
#8 lore raw

Re: [PATCH 2/2] xfs: deprecate barrier/nobarrier mount option

Quoted 28 lines · Brian Foster
Quoted 12 lines · Dave Chinner

From: Dave Chinner <[email protected]>

We always perform integrity operations now, so these mount options don't do anything. Deprecate them and mark them for removal in in a year.

---
 Documentation/filesystems/xfs.txt | 12 ++++--------
 fs/xfs/xfs_super.c                | 25 ++++++++++++++++---------
 2 files changed, 20 insertions(+), 17 deletions(-)

...

Quoted 4 lines
fs/xfs/xfs_super.c +0 -0
index 563d1d146b8c..eecbaac08eba 100644

...

Quoted 9 lines
fs/xfs/xfs_super.c +5 -0
@@ -374,6 +371,14 @@ xfs_parseargs(
 			mp->m_flags |= XFS_MOUNT_DAX;
 			break;
 #endif
+		case Opt_barrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags |= XFS_MOUNT_BARRIER;
+			break;
+		case Opt_nobarrier:
Quoted 8 lines

fs/xfs/xfs_super.c xfs_parseargs( · line 381

Quoted 3 lines
fs/xfs/xfs_super.c +3 -0
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags &= ~XFS_MOUNT_BARRIER;
+			break;

So basically XFS_MOUNT_BARRIER exists solely for the purpose of showargs. Should we just kill it too and do something deterministic on showargs (i.e., always show 'barrier' or just drop it entirely), or does precedent suggest otherwise?

Well, they are deprecated and ignored, but we can't remove them straight away so I thought we should still report them appropriately in showargs.

I don't really care either way - I can kill it completely if you think that's better.

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]
#9 lore raw

Re: [PATCH 2/2] xfs: deprecate barrier/nobarrier mount option

Quoted 38 lines · Dave Chinner
Quoted 28 lines · Brian Foster
Quoted 12 lines · Dave Chinner

From: Dave Chinner <[email protected]>

We always perform integrity operations now, so these mount options don't do anything. Deprecate them and mark them for removal in in a year.

---
 Documentation/filesystems/xfs.txt | 12 ++++--------
 fs/xfs/xfs_super.c                | 25 ++++++++++++++++---------
 2 files changed, 20 insertions(+), 17 deletions(-)

...

Quoted 4 lines
fs/xfs/xfs_super.c +0 -0
index 563d1d146b8c..eecbaac08eba 100644

...

Quoted 9 lines
fs/xfs/xfs_super.c +5 -0
@@ -374,6 +371,14 @@ xfs_parseargs(
 			mp->m_flags |= XFS_MOUNT_DAX;
 			break;
 #endif
+		case Opt_barrier:
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags |= XFS_MOUNT_BARRIER;
+			break;
+		case Opt_nobarrier:
Quoted 8 lines

fs/xfs/xfs_super.c xfs_parseargs( · line 381

Quoted 3 lines
fs/xfs/xfs_super.c +3 -0
+			xfs_warn(mp, "%s option is deprecated, ignoring.", p);
+			mp->m_flags &= ~XFS_MOUNT_BARRIER;
+			break;

So basically XFS_MOUNT_BARRIER exists solely for the purpose of showargs. Should we just kill it too and do something deterministic on showargs (i.e., always show 'barrier' or just drop it entirely), or does precedent suggest otherwise?

Quoted 7 lines

Well, they are deprecated and ignored, but we can't remove them straight away so I thought we should still report them appropriately in showargs.

I don't really care either way - I can kill it completely if you think that's better.

Ok. No major preference.. my first instinct was just to see it all killed off to explicitly show that the mount option has no effect. Either way is fine, thanks.

Brian

Quoted 6 lines

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]
Reviewed-by on v1 2/2
#10 lore raw

Re: [PATCH 2/2] xfs: deprecate barrier/nobarrier mount option

In reply to Dave Chinner
Quoted 5 lines · Dave Chinner

From: Dave Chinner <[email protected]>

We always perform integrity operations now, so these mount options don't do anything. Deprecate them and mark them for removal in in a year.

This might be a bit of a too aggressive schedule, but we'll see..

Looks fine otherwise: