[pnfs] [PATCH 04/10] pnfs: Use an enum for result of try_to_XXX functions
Dean Hildebrand
seattleplus at gmail.com
Thu Jul 10 01:07:11 EDT 2008
doh, I'll fix this.
Dean
Benny Halevy wrote:
> If you you're going the enum way, then functions that return it
> should return enum pnfs_try_status, not "int" so that the compiler
> could perform stricter type checking.
>
> On Jul. 09, 2008, 0:54 +0300, Dean Hildebrand <seattleplus at gmail.com> wrote:
>
>> Signed-off-by: Dean Hildebrand <dhildeb at us.ibm.com>
>> ---
>> fs/nfs/pnfs.c | 16 ++++++++--------
>> fs/nfs/pnfs.h | 18 ++++++++++++------
>> fs/nfs/read.c | 2 +-
>> fs/nfs/write.c | 4 ++--
>> 4 files changed, 23 insertions(+), 17 deletions(-)
>>
>> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
>> index 96cf2e0..88a6fa7 100644
>> --- a/fs/nfs/pnfs.c
>> +++ b/fs/nfs/pnfs.c
>> @@ -1497,7 +1497,7 @@ pnfs_writepages(struct nfs_write_data *wdata, int how)
>> if (status) {
>> dprintk("%s: Updating layout failed (%d), retry with NFS \n",
>> __func__, status);
>> - status = 1; /* retry with nfs I/O */
>> + status = PNFS_NOT_ATTEMPTED; /* retry with nfs I/O */
>> goto out;
>> }
>>
>> @@ -1522,7 +1522,7 @@ pnfs_writepages(struct nfs_write_data *wdata, int how)
>> how,
>> wdata);
>>
>> - BUG_ON(status < 0);
>> + BUG_ON(status < PNFS_ATTEMPTED);
>>
>
> The original condition here was to make sure the LD didn't
> return an error (like it used to). With the enum it should
> actually be BUG_ON(status != PNFS_ATTEMPTED && status != PNFS_NOT_ATTEMPTED)
> I think that if we change its return type we can just get rid of the BUG_ON
> and rely on the compiler to warn about this at compile time.
>
>
>> if (status)
>> wdata->pdata.pnfsflags &= ~PNFS_NO_RPC;
>> out:
>> @@ -1574,7 +1574,7 @@ pnfs_readpages(struct nfs_read_data *rdata)
>> if (status) {
>> dprintk("%s: ERROR %d from pnfs_update_layout\n",
>> __func__, status);
>> - status = 1;
>> + status = PNFS_NOT_ATTEMPTED;
>> goto out;
>> }
>>
>> @@ -1598,7 +1598,7 @@ pnfs_readpages(struct nfs_read_data *rdata)
>> (loff_t)args->offset,
>> args->count,
>> rdata);
>> - BUG_ON(status < 0);
>> + BUG_ON(status < PNFS_ATTEMPTED);
>>
>
> same here.
>
>
>> if (status)
>> rdata->pdata.pnfsflags &= ~PNFS_NO_RPC;
>> out:
>> @@ -1617,7 +1617,7 @@ int _pnfs_try_to_read_data(struct nfs_read_data *data,
>> if (!pnfs_use_read(ino, data->args.count) ||
>> !nfss->pnfs_curr_ld->ld_io_ops->read_pagelist) {
>> dprintk("<-- %s: not using pnfs\n", __func__);
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> } else {
>> dprintk("%s: Utilizing pNFS I/O\n", __func__);
>> data->pdata.call_ops = call_ops;
>> @@ -1703,7 +1703,7 @@ int _pnfs_try_to_write_data(struct nfs_write_data *data,
>> if (!pnfs_use_write(ino, data->args.count) ||
>> !nfss->pnfs_curr_ld->ld_io_ops->write_pagelist) {
>> dprintk("<-- %s: not using pnfs\n", __func__);
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> } else {
>> dprintk("%s: Utilizing pNFS I/O\n", __func__);
>> data->pdata.call_ops = call_ops;
>> @@ -1720,7 +1720,7 @@ int _pnfs_try_to_commit(struct nfs_write_data *data,
>>
>> if (!pnfs_use_write(inode, -1)) {
>> dprintk("%s: Not using pNFS I/O\n", __func__);
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> } else {
>> /* data->call_ops and data->how set in nfs_commit_rpcsetup */
>> dprintk("%s: Utilizing pNFS I/O\n", __func__);
>> @@ -1785,7 +1785,7 @@ pnfs_commit(struct nfs_write_data *data, int sync)
>> * and o_direct commit processing.
>> */
>> dprintk("%s: no layout. Not using pNFS.\n", __func__);
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> }
>>
>> dprintk("%s: Calling layout driver commit\n", __func__);
>> diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h
>> index 340ebb3..e2e32d9 100644
>> --- a/fs/nfs/pnfs.h
>> +++ b/fs/nfs/pnfs.h
>> @@ -16,7 +16,13 @@
>> #include <linux/nfs_page.h>
>> #include <linux/nfs4_pnfs.h>
>>
>> +enum pnfs_try_status {
>> + PNFS_ATTEMPTED = 0,
>> + PNFS_NOT_ATTEMPTED = 1,
>> +};
>> +
>> #ifdef CONFIG_PNFS
>> +
>> /* nfs4proc.c */
>> extern int nfs4_pnfs_getdevicelist(struct super_block *sb, struct nfs_fh *fh,
>> struct pnfs_devicelist *devlist);
>> @@ -92,7 +98,7 @@ static inline int pnfs_try_to_read_data(struct nfs_read_data *data,
>> if (PNFS_EXISTS_LDIO_OP(nfss, read_pagelist))
>> return _pnfs_try_to_read_data(data, call_ops);
>>
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> }
>>
>> static inline int pnfs_try_to_write_data(struct nfs_write_data *data,
>> @@ -106,7 +112,7 @@ static inline int pnfs_try_to_write_data(struct nfs_write_data *data,
>> if (PNFS_EXISTS_LDIO_OP(nfss, write_pagelist))
>> return _pnfs_try_to_write_data(data, call_ops, how);
>>
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> }
>>
>> static inline int pnfs_try_to_commit(struct nfs_write_data *data,
>> @@ -123,7 +129,7 @@ static inline int pnfs_try_to_commit(struct nfs_write_data *data,
>> if (PNFS_EXISTS_LDIO_OP(nfss, write_pagelist))
>> return _pnfs_try_to_commit(data, call_ops, how);
>>
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> }
>>
>> static inline int pnfs_write_begin(struct file *filp, struct page *page,
>> @@ -207,21 +213,21 @@ static inline int pnfs_return_layout(struct inode *ino,
>> static inline int pnfs_try_to_read_data(struct nfs_read_data *data,
>> const struct rpc_call_ops *call_ops)
>> {
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> }
>>
>> static inline int pnfs_try_to_write_data(struct nfs_write_data *data,
>> const struct rpc_call_ops *call_ops,
>> int how)
>> {
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> }
>>
>> static inline int pnfs_try_to_commit(struct nfs_write_data *data,
>> const struct rpc_call_ops *call_ops,
>> int how)
>> {
>> - return 1;
>> + return PNFS_NOT_ATTEMPTED;
>> }
>>
>> static inline int pnfs_do_flush(struct nfs_page *req, void *fsdata)
>> diff --git a/fs/nfs/read.c b/fs/nfs/read.c
>> index 31b4c40..6f96a53 100644
>> --- a/fs/nfs/read.c
>> +++ b/fs/nfs/read.c
>> @@ -224,7 +224,7 @@ static int nfs_read_rpcsetup(struct nfs_page *req, struct nfs_read_data *data,
>>
>> ret = pnfs_try_to_read_data(data, call_ops);
>> #if defined(CONFIG_PNFS)
>> - if (ret == 0)
>> + if (ret == PNFS_ATTEMPTED)
>> return data->pdata.pnfs_error;
>> #endif /* CONFIG_PNFS */
>>
>> diff --git a/fs/nfs/write.c b/fs/nfs/write.c
>> index fbffb57..b5e046f 100644
>> --- a/fs/nfs/write.c
>> +++ b/fs/nfs/write.c
>> @@ -868,7 +868,7 @@ static int nfs_write_rpcsetup(struct nfs_page *req,
>>
>> ret = pnfs_try_to_write_data(data, call_ops, how);
>> #if defined(CONFIG_PNFS)
>> - if (ret == 0)
>> + if (ret == PNFS_ATTEMPTED)
>> return data->pdata.pnfs_error;
>> #endif /* CONFIG_PNFS */
>>
>> @@ -1313,7 +1313,7 @@ static int nfs_commit_rpcsetup(struct list_head *head,
>>
>> data->args.context = first->wb_context; /* used by commit done */
>> ret = pnfs_try_to_commit(data, &nfs_commit_ops, how);
>> - if (ret <= 0)
>> + if (ret <= PNFS_ATTEMPTED)
>> return ret;
>>
>> return nfs_initiate_commit(data, NFS_CLIENT(inode), how);
>>
>
>
More information about the pNFS
mailing list