Re: [PATCH 20/22] pnfs-submit: wave2: remove all LAYOUTRETURN code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 16, 2010 at 7:47 AM, Boaz Harrosh <bharrosh@xxxxxxxxxxx> wrote:
> On 12/10/2010 03:22 AM, Fred Isaman wrote:
>
>> --- a/fs/nfs/pnfs.c
>> +++ b/fs/nfs/pnfs.c
>> @@ -599,55 +599,6 @@ void nfs4_asynch_forget_layouts(struct pnfs_layout_hdr *lo,
>>               }
>>  }
>>
>> -/* Return true if there is layout based io in progress in the given range.
>> - * Assumes range has already been marked invalid, and layout marked to
>> - * prevent any new lseg from being inserted.
>> - */
>> -bool
>> -pnfs_return_layout_barrier(struct nfs_inode *nfsi,
>> -                        struct pnfs_layout_range *range)
>> -{
>> -     struct pnfs_layout_segment *lseg;
>> -     bool ret = false;
>> -
>> -     spin_lock(&nfsi->vfs_inode.i_lock);
>> -     list_for_each_entry(lseg, &nfsi->layout->segs, fi_list)
>> -             if (should_free_lseg(&lseg->range, range)) {
>> -                     ret = true;
>> -                     break;
>> -             }
>> -     spin_unlock(&nfsi->vfs_inode.i_lock);
>> -     dprintk("%s:Return %d\n", __func__, ret);
>> -     return ret;
>> -}
>> -
>> -static int
>> -return_layout(struct inode *ino, struct pnfs_layout_range *range, bool wait)
>> -{
>> -     struct nfs4_layoutreturn *lrp;
>> -     struct nfs_server *server = NFS_SERVER(ino);
>> -     int status = -ENOMEM;
>> -
>> -     dprintk("--> %s\n", __func__);
>> -
>> -     lrp = kzalloc(sizeof(*lrp), GFP_KERNEL);
>> -     if (lrp == NULL) {
>> -             put_layout_hdr(ino);
>> -             goto out;
>> -     }
>> -     lrp->args.reclaim = 0;
>> -     lrp->args.layout_type = server->pnfs_curr_ld->id;
>> -     lrp->args.return_type = RETURN_FILE;
>> -     lrp->args.range = *range;
>> -     lrp->args.inode = ino;
>> -     lrp->clp = server->nfs_client;
>> -
>> -     status = nfs4_proc_layoutreturn(lrp, wait);
>> -out:
>> -     dprintk("<-- %s status: %d\n", __func__, status);
>> -     return status;
>> -}
>> -
>>  /* Initiates a LAYOUTRETURN(FILE) */
>>  int
>>  _pnfs_return_layout(struct inode *ino, struct pnfs_layout_range *range,
>> @@ -673,21 +624,10 @@ _pnfs_return_layout(struct inode *ino, struct pnfs_layout_range *range,
>>               goto out;
>>       }
>>       lo->plh_block_lgets++;
>> -     /* Reference matched in nfs4_layoutreturn_release */
>> -     get_layout_hdr(lo);
>>       spin_unlock(&ino->i_lock);
>>       pnfs_free_lseg_list(&tmp_list);
>>
>> -     if (layoutcommit_needed(nfsi)) {
>> -             status = pnfs_layoutcommit_inode(ino, wait);
>> -             if (status) {
>> -                     /* Return layout even if layoutcommit fails */
>> -                     dprintk("%s: layoutcommit failed, status=%d. "
>> -                             "Returning layout anyway\n",
>> -                             __func__, status);
>> -             }
>> -     }
>> -     status = return_layout(ino, &arg, wait);
>
>
> You are also removing the layoutcommit.
> 1. You have not stated it anywhere, and snacked it in silently
> 2. If you are removing layoutcommit please do that in a different
>   patch with it's own comment and explanation.
> 3. How come? forgetful or not layoutcommits are a different issue
>   and must be done correctly when writing !!!?!
>
> Boaz

You are right, that should have been a separate patch.

Fred

>> +     /* Don't need to wait since this is followed by call to end_writeback */
>>  out:
>>       dprintk("<-- %s status: %d\n", __func__, status);
>>       return status;
>> diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
>> index d999e38..0ddab0d 100644
>> --- a/fs/nfs/pnfs.h
>> +++ b/fs/nfs/pnfs.h
>> @@ -183,7 +183,6 @@ extern int nfs4_proc_getdeviceinfo(struct nfs_server *server,
>>  extern int nfs4_proc_layoutget(struct nfs4_layoutget *lgp);
>>  extern int nfs4_proc_layoutcommit(struct nfs4_layoutcommit_data *data,
>>                                  int issync);
>> -extern int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp, bool wait);
>>
>>  /* pnfs.c */
>>  void get_layout_hdr(struct pnfs_layout_hdr *lo);
>> @@ -193,7 +192,6 @@ bool should_free_lseg(struct pnfs_layout_range *lseg_range,
>>  struct pnfs_layout_segment *
>>  pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx,
>>                  enum pnfs_iomode access_type);
>> -bool pnfs_return_layout_barrier(struct nfs_inode *, struct pnfs_layout_range *);
>>  int _pnfs_return_layout(struct inode *, struct pnfs_layout_range *, bool wait);
>>  void set_pnfs_layoutdriver(struct nfs_server *, u32 id);
>>  void unset_pnfs_layoutdriver(struct nfs_server *);
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux