nfs4proc.c (876c553cb41026cb6ad3cef970a35e5f69c42a25) | nfs4proc.c (7fe2a71dda349a1afa75781f0cc7975be9784d15) |
---|---|
1/* 2 * Server-side procedures for NFSv4. 3 * 4 * Copyright (c) 2002 The Regents of the University of Michigan. 5 * All rights reserved. 6 * 7 * Kendrick Smith <kmsmith@umich.edu> 8 * Andy Adamson <andros@umich.edu> --- 272 unchanged lines hidden (view full) --- 281 * 282 * Upon return, caller must release @fhp and @resfhp. 283 */ 284static __be32 285nfsd4_create_file(struct svc_rqst *rqstp, struct svc_fh *fhp, 286 struct svc_fh *resfhp, struct nfsd4_open *open) 287{ 288 struct iattr *iap = &open->op_iattr; | 1/* 2 * Server-side procedures for NFSv4. 3 * 4 * Copyright (c) 2002 The Regents of the University of Michigan. 5 * All rights reserved. 6 * 7 * Kendrick Smith <kmsmith@umich.edu> 8 * Andy Adamson <andros@umich.edu> --- 272 unchanged lines hidden (view full) --- 281 * 282 * Upon return, caller must release @fhp and @resfhp. 283 */ 284static __be32 285nfsd4_create_file(struct svc_rqst *rqstp, struct svc_fh *fhp, 286 struct svc_fh *resfhp, struct nfsd4_open *open) 287{ 288 struct iattr *iap = &open->op_iattr; |
289 struct nfsd_attrs attrs = { 290 .na_iattr = iap, 291 }; |
|
289 struct dentry *parent, *child; 290 __u32 v_mtime, v_atime; 291 struct inode *inode; 292 __be32 status; 293 int host_err; 294 295 if (isdotent(open->op_fname, open->op_fnamelen)) 296 return nfserr_exist; --- 102 unchanged lines hidden (view full) --- 399 ATTR_MTIME_SET|ATTR_ATIME_SET; 400 iap->ia_mtime.tv_sec = v_mtime; 401 iap->ia_atime.tv_sec = v_atime; 402 iap->ia_mtime.tv_nsec = 0; 403 iap->ia_atime.tv_nsec = 0; 404 } 405 406set_attr: | 292 struct dentry *parent, *child; 293 __u32 v_mtime, v_atime; 294 struct inode *inode; 295 __be32 status; 296 int host_err; 297 298 if (isdotent(open->op_fname, open->op_fnamelen)) 299 return nfserr_exist; --- 102 unchanged lines hidden (view full) --- 402 ATTR_MTIME_SET|ATTR_ATIME_SET; 403 iap->ia_mtime.tv_sec = v_mtime; 404 iap->ia_atime.tv_sec = v_atime; 405 iap->ia_mtime.tv_nsec = 0; 406 iap->ia_atime.tv_nsec = 0; 407 } 408 409set_attr: |
407 status = nfsd_create_setattr(rqstp, fhp, resfhp, iap); | 410 status = nfsd_create_setattr(rqstp, fhp, resfhp, &attrs); |
408 409out: 410 fh_unlock(fhp); 411 if (child && !IS_ERR(child)) 412 dput(child); 413 fh_drop_write(fhp); 414 return status; 415} --- 366 unchanged lines hidden (view full) --- 782 (__be32 *)commit->co_verf.data); 783} 784 785static __be32 786nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, 787 union nfsd4_op_u *u) 788{ 789 struct nfsd4_create *create = &u->create; | 411 412out: 413 fh_unlock(fhp); 414 if (child && !IS_ERR(child)) 415 dput(child); 416 fh_drop_write(fhp); 417 return status; 418} --- 366 unchanged lines hidden (view full) --- 785 (__be32 *)commit->co_verf.data); 786} 787 788static __be32 789nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, 790 union nfsd4_op_u *u) 791{ 792 struct nfsd4_create *create = &u->create; |
793 struct nfsd_attrs attrs = { 794 .na_iattr = &create->cr_iattr, 795 }; |
|
790 struct svc_fh resfh; 791 __be32 status; 792 dev_t rdev; 793 794 fh_init(&resfh, NFS4_FHSIZE); 795 796 status = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_NOP); 797 if (status) --- 15 unchanged lines hidden (view full) --- 813 case NF4BLK: 814 status = nfserr_inval; 815 rdev = MKDEV(create->cr_specdata1, create->cr_specdata2); 816 if (MAJOR(rdev) != create->cr_specdata1 || 817 MINOR(rdev) != create->cr_specdata2) 818 goto out_umask; 819 status = nfsd_create(rqstp, &cstate->current_fh, 820 create->cr_name, create->cr_namelen, | 796 struct svc_fh resfh; 797 __be32 status; 798 dev_t rdev; 799 800 fh_init(&resfh, NFS4_FHSIZE); 801 802 status = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_NOP); 803 if (status) --- 15 unchanged lines hidden (view full) --- 819 case NF4BLK: 820 status = nfserr_inval; 821 rdev = MKDEV(create->cr_specdata1, create->cr_specdata2); 822 if (MAJOR(rdev) != create->cr_specdata1 || 823 MINOR(rdev) != create->cr_specdata2) 824 goto out_umask; 825 status = nfsd_create(rqstp, &cstate->current_fh, 826 create->cr_name, create->cr_namelen, |
821 &create->cr_iattr, S_IFBLK, rdev, &resfh); | 827 &attrs, S_IFBLK, rdev, &resfh); |
822 break; 823 824 case NF4CHR: 825 status = nfserr_inval; 826 rdev = MKDEV(create->cr_specdata1, create->cr_specdata2); 827 if (MAJOR(rdev) != create->cr_specdata1 || 828 MINOR(rdev) != create->cr_specdata2) 829 goto out_umask; 830 status = nfsd_create(rqstp, &cstate->current_fh, 831 create->cr_name, create->cr_namelen, | 828 break; 829 830 case NF4CHR: 831 status = nfserr_inval; 832 rdev = MKDEV(create->cr_specdata1, create->cr_specdata2); 833 if (MAJOR(rdev) != create->cr_specdata1 || 834 MINOR(rdev) != create->cr_specdata2) 835 goto out_umask; 836 status = nfsd_create(rqstp, &cstate->current_fh, 837 create->cr_name, create->cr_namelen, |
832 &create->cr_iattr, S_IFCHR, rdev, &resfh); | 838 &attrs, S_IFCHR, rdev, &resfh); |
833 break; 834 835 case NF4SOCK: 836 status = nfsd_create(rqstp, &cstate->current_fh, 837 create->cr_name, create->cr_namelen, | 839 break; 840 841 case NF4SOCK: 842 status = nfsd_create(rqstp, &cstate->current_fh, 843 create->cr_name, create->cr_namelen, |
838 &create->cr_iattr, S_IFSOCK, 0, &resfh); | 844 &attrs, S_IFSOCK, 0, &resfh); |
839 break; 840 841 case NF4FIFO: 842 status = nfsd_create(rqstp, &cstate->current_fh, 843 create->cr_name, create->cr_namelen, | 845 break; 846 847 case NF4FIFO: 848 status = nfsd_create(rqstp, &cstate->current_fh, 849 create->cr_name, create->cr_namelen, |
844 &create->cr_iattr, S_IFIFO, 0, &resfh); | 850 &attrs, S_IFIFO, 0, &resfh); |
845 break; 846 847 case NF4DIR: 848 create->cr_iattr.ia_valid &= ~ATTR_SIZE; 849 status = nfsd_create(rqstp, &cstate->current_fh, 850 create->cr_name, create->cr_namelen, | 851 break; 852 853 case NF4DIR: 854 create->cr_iattr.ia_valid &= ~ATTR_SIZE; 855 status = nfsd_create(rqstp, &cstate->current_fh, 856 create->cr_name, create->cr_namelen, |
851 &create->cr_iattr, S_IFDIR, 0, &resfh); | 857 &attrs, S_IFDIR, 0, &resfh); |
852 break; 853 854 default: 855 status = nfserr_badtype; 856 } 857 858 if (status) 859 goto out; --- 277 unchanged lines hidden (view full) --- 1137 exp_put(u->secinfo_no_name.sin_exp); 1138} 1139 1140static __be32 1141nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, 1142 union nfsd4_op_u *u) 1143{ 1144 struct nfsd4_setattr *setattr = &u->setattr; | 858 break; 859 860 default: 861 status = nfserr_badtype; 862 } 863 864 if (status) 865 goto out; --- 277 unchanged lines hidden (view full) --- 1143 exp_put(u->secinfo_no_name.sin_exp); 1144} 1145 1146static __be32 1147nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, 1148 union nfsd4_op_u *u) 1149{ 1150 struct nfsd4_setattr *setattr = &u->setattr; |
1151 struct nfsd_attrs attrs = { 1152 .na_iattr = &setattr->sa_iattr, 1153 }; |
|
1145 __be32 status = nfs_ok; 1146 int err; 1147 1148 if (setattr->sa_iattr.ia_valid & ATTR_SIZE) { 1149 status = nfs4_preprocess_stateid_op(rqstp, cstate, 1150 &cstate->current_fh, &setattr->sa_stateid, 1151 WR_STATE, NULL, NULL); 1152 if (status) { --- 16 unchanged lines hidden (view full) --- 1169 setattr->sa_acl); 1170 if (status) 1171 goto out; 1172 if (setattr->sa_label.len) 1173 status = nfsd4_set_nfs4_label(rqstp, &cstate->current_fh, 1174 &setattr->sa_label); 1175 if (status) 1176 goto out; | 1154 __be32 status = nfs_ok; 1155 int err; 1156 1157 if (setattr->sa_iattr.ia_valid & ATTR_SIZE) { 1158 status = nfs4_preprocess_stateid_op(rqstp, cstate, 1159 &cstate->current_fh, &setattr->sa_stateid, 1160 WR_STATE, NULL, NULL); 1161 if (status) { --- 16 unchanged lines hidden (view full) --- 1178 setattr->sa_acl); 1179 if (status) 1180 goto out; 1181 if (setattr->sa_label.len) 1182 status = nfsd4_set_nfs4_label(rqstp, &cstate->current_fh, 1183 &setattr->sa_label); 1184 if (status) 1185 goto out; |
1177 status = nfsd_setattr(rqstp, &cstate->current_fh, &setattr->sa_iattr, | 1186 status = nfsd_setattr(rqstp, &cstate->current_fh, &attrs, |
1178 0, (time64_t)0); 1179out: 1180 fh_drop_write(&cstate->current_fh); 1181 return status; 1182} 1183 1184static __be32 1185nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, --- 2456 unchanged lines hidden --- | 1187 0, (time64_t)0); 1188out: 1189 fh_drop_write(&cstate->current_fh); 1190 return status; 1191} 1192 1193static __be32 1194nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, --- 2456 unchanged lines hidden --- |