| To: | Dave Chinner <david@xxxxxxxxxxxxx> |
|---|---|
| Subject: | Re: [PATCH 06/12] repair: use recursive buffer locking |
| From: | Christoph Hellwig <hch@xxxxxxxxxxxxx> |
| Date: | Sun, 18 Dec 2011 17:54:45 -0500 |
| Cc: | Christoph Hellwig <hch@xxxxxxxxxxxxx>, xfs@xxxxxxxxxxx |
| In-reply-to: | <20111213022208.GZ14273@dastard> |
| References: | <20111202174619.179530033@xxxxxxxxxxxxxxxxxxxxxx> <20111202174742.106589485@xxxxxxxxxxxxxxxxxxxxxx> <20111213022208.GZ14273@dastard> |
| User-agent: | Mutt/1.5.21 (2010-09-15) |
On Tue, Dec 13, 2011 at 01:22:08PM +1100, Dave Chinner wrote:
> > if (use_xfs_buf_lock) {
> > - if (flags & LIBXFS_GETBUF_TRYLOCK) {
> > - int ret;
> > + int ret;
> >
> > - ret = pthread_mutex_trylock(&bp->b_lock);
> > - if (ret) {
> > - ASSERT(ret == EAGAIN);
> > - cache_node_put(libxfs_bcache, (struct
> > cache_node *)bp);
> > - return NULL;
> > + ret = pthread_mutex_trylock(&bp->b_lock);
> > + if (ret) {
> > + ASSERT(ret == EAGAIN);
> > + if (flags & LIBXFS_GETBUF_TRYLOCK)
> > + goto out_put;
> > +
> > + if (pthread_equal(bp->b_holder, pthread_self())) {
> > + fprintf(stderr,
> > + _("recursive buffer locking detected\n"));
>
> "Warning: recursive buffer locking @ bno %lld detected"
>
> might be more informative, especially to do with the severity of the
> issue.
Ok, I'll make it print the block number.
>
> > + bp->b_recur++;
> > + } else {
> > + pthread_mutex_lock(&bp->b_lock);
> > }
> > - } else {
> > - pthread_mutex_lock(&bp->b_lock);
> > }
> > +
> > + bp->b_holder = pthread_self();
>
> That should probably only be written in the branch where the lock is
> taken not every time through here.
We actually should return the buffer just after incrementing the
recursion count, else we might add it to the global list of buffers
twice.
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH 04/12] xfsprogs: allow linking against libtcmalloc, Christoph Hellwig |
|---|---|
| Next by Date: | Re: [RFC, PATCH 0/12] xfs: compound buffers for directory blocks, Dave Chinner |
| Previous by Thread: | Re: [PATCH 06/12] repair: use recursive buffer locking, Dave Chinner |
| Next by Thread: | [XFS updates] XFS development tree branch, master, updated. v3.2-rc1-9-ga99ebf4, xfs |
| Indexes: | [Date] [Thread] [Top] [All Lists] |