From: Eric Sandeen <sandeen@sandeen.net>
To: Christoph Hellwig <hch@infradead.org>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH] xfs: only issues a cache flush on unmount if barriers are enabled.
Date: Tue, 03 Mar 2009 10:14:00 -0600 [thread overview]
Message-ID: <49AD5748.9050302@sandeen.net> (raw)
In-Reply-To: <20090224133354.GA15820@infradead.org>
Christoph Hellwig wrote:
> Currently we unconditionally issue a flush from xfs_free_buftarg, but
> since 2.6.29-rc1 this gives a warning in the style of
>
> Filesystem "vdb": Disabling barriers, trial barrier write failed
>
> when the underlying device doesn't support these cache flushes. So make
> the flush conditional on the barrier flag.
>
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Patch seems fine,
Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
but it seems that the changelog is not quite correct; the message shown
above should only ever happen on mount, not unmount, I think.
So I'd either put the right message in or just make a vague reference to
it, because otherwise it's confusing. :)
Thanks,
-Eric
> Index: xfs/fs/xfs/linux-2.6/xfs_buf.c
> ===================================================================
> --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.c 2009-02-23 22:46:03.363048798 +0100
> +++ xfs/fs/xfs/linux-2.6/xfs_buf.c 2009-02-23 22:48:47.915052140 +0100
> @@ -34,6 +34,12 @@
> #include <linux/backing-dev.h>
> #include <linux/freezer.h>
>
> +#include "xfs_sb.h"
> +#include "xfs_inum.h"
> +#include "xfs_ag.h"
> +#include "xfs_dmapi.h"
> +#include "xfs_mount.h"
> +
> static kmem_zone_t *xfs_buf_zone;
> STATIC int xfsbufd(void *);
> STATIC int xfsbufd_wakeup(int, gfp_t);
> @@ -1442,10 +1448,12 @@ xfs_unregister_buftarg(
>
> void
> xfs_free_buftarg(
> - xfs_buftarg_t *btp)
> + struct xfs_mount *mp,
> + struct xfs_buftarg *btp)
> {
> xfs_flush_buftarg(btp, 1);
> - xfs_blkdev_issue_flush(btp);
> + if (mp->m_flags & XFS_MOUNT_BARRIER)
> + xfs_blkdev_issue_flush(btp);
> xfs_free_bufhash(btp);
> iput(btp->bt_mapping->host);
>
> Index: xfs/fs/xfs/linux-2.6/xfs_buf.h
> ===================================================================
> --- xfs.orig/fs/xfs/linux-2.6/xfs_buf.h 2009-02-23 22:46:03.375049208 +0100
> +++ xfs/fs/xfs/linux-2.6/xfs_buf.h 2009-02-23 22:46:35.660960473 +0100
> @@ -416,7 +416,7 @@ static inline int XFS_bwrite(xfs_buf_t *
> * Handling of buftargs.
> */
> extern xfs_buftarg_t *xfs_alloc_buftarg(struct block_device *, int);
> -extern void xfs_free_buftarg(xfs_buftarg_t *);
> +extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *);
> extern void xfs_wait_buftarg(xfs_buftarg_t *);
> extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int);
> extern int xfs_flush_buftarg(xfs_buftarg_t *, int);
> Index: xfs/fs/xfs/linux-2.6/xfs_super.c
> ===================================================================
> --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2009-02-23 22:46:46.637924949 +0100
> +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2009-02-23 22:47:19.787924537 +0100
> @@ -740,15 +740,15 @@ xfs_close_devices(
> {
> if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) {
> struct block_device *logdev = mp->m_logdev_targp->bt_bdev;
> - xfs_free_buftarg(mp->m_logdev_targp);
> + xfs_free_buftarg(mp, mp->m_logdev_targp);
> xfs_blkdev_put(logdev);
> }
> if (mp->m_rtdev_targp) {
> struct block_device *rtdev = mp->m_rtdev_targp->bt_bdev;
> - xfs_free_buftarg(mp->m_rtdev_targp);
> + xfs_free_buftarg(mp, mp->m_rtdev_targp);
> xfs_blkdev_put(rtdev);
> }
> - xfs_free_buftarg(mp->m_ddev_targp);
> + xfs_free_buftarg(mp, mp->m_ddev_targp);
> }
>
> /*
> @@ -817,9 +817,9 @@ xfs_open_devices(
>
> out_free_rtdev_targ:
> if (mp->m_rtdev_targp)
> - xfs_free_buftarg(mp->m_rtdev_targp);
> + xfs_free_buftarg(mp, mp->m_rtdev_targp);
> out_free_ddev_targ:
> - xfs_free_buftarg(mp->m_ddev_targp);
> + xfs_free_buftarg(mp, mp->m_ddev_targp);
> out_close_rtdev:
> if (rtdev)
> xfs_blkdev_put(rtdev);
>
> _______________________________________________
> xfs mailing list
> xfs@oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs
>
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
prev parent reply other threads:[~2009-03-03 16:14 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-24 13:33 [PATCH] xfs: only issues a cache flush on unmount if barriers are enabled Christoph Hellwig
2009-03-03 16:14 ` Eric Sandeen [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49AD5748.9050302@sandeen.net \
--to=sandeen@sandeen.net \
--cc=hch@infradead.org \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox