Lines Matching defs:iap
307 nfsd_sanitize_attrs(struct inode *inode, struct iattr *iap)
310 if (iap->ia_valid & ATTR_MODE) {
311 iap->ia_mode &= S_IALLUGO;
312 iap->ia_mode |= (inode->i_mode & ~S_IALLUGO);
317 ((iap->ia_valid & ATTR_UID) || (iap->ia_valid & ATTR_GID))) {
318 iap->ia_valid |= ATTR_KILL_PRIV;
319 if (iap->ia_valid & ATTR_MODE) {
321 iap->ia_mode &= ~S_ISUID;
322 if (iap->ia_mode & S_IXGRP)
323 iap->ia_mode &= ~S_ISGID;
326 iap->ia_valid |= (ATTR_KILL_SUID | ATTR_KILL_SGID);
333 struct iattr *iap)
338 if (iap->ia_size < inode->i_size) {
351 host_err = locks_verify_truncate(inode, NULL, iap->ia_size);
366 nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap,
376 bool size_change = (iap->ia_valid & ATTR_SIZE);
378 if (iap->ia_valid & ATTR_SIZE) {
390 if (iap->ia_valid & (ATTR_ATIME | ATTR_MTIME)) {
392 if (!(iap->ia_valid & (ATTR_ATIME_SET | ATTR_MTIME_SET)))
414 iap->ia_valid &= ~ATTR_MODE;
416 if (!iap->ia_valid)
419 nfsd_sanitize_attrs(inode, iap);
432 err = nfsd_get_write_access(rqstp, fhp, iap);
448 .ia_size = iap->ia_size,
454 iap->ia_valid &= ~ATTR_SIZE;
461 if ((iap->ia_valid & ~ATTR_MTIME) == 0)
465 iap->ia_valid |= ATTR_CTIME;
466 host_err = notify_change(dentry, iap, NULL);
1191 struct iattr *iap)
1196 iap->ia_valid &= ~ATTR_MODE;
1203 iap->ia_valid &= ~(ATTR_UID|ATTR_GID);
1204 if (iap->ia_valid)
1205 return nfsd_setattr(rqstp, resfhp, iap, 0, (time64_t)0);
1219 nfsd_check_ignore_resizing(struct iattr *iap)
1221 if ((iap->ia_valid & ATTR_SIZE) && (iap->ia_size == 0))
1222 iap->ia_valid &= ~ATTR_SIZE;
1228 char *fname, int flen, struct iattr *iap,
1252 if (!(iap->ia_valid & ATTR_MODE))
1253 iap->ia_mode = 0;
1254 iap->ia_mode = (iap->ia_mode & S_IALLUGO) | type;
1257 iap->ia_mode &= ~current_umask();
1263 host_err = vfs_create(dirp, dchild, iap->ia_mode, true);
1265 nfsd_check_ignore_resizing(iap);
1268 host_err = vfs_mkdir(dirp, dchild, iap->ia_mode);
1296 host_err = vfs_mknod(dirp, dchild, iap->ia_mode, rdev);
1306 err = nfsd_create_setattr(rqstp, resfhp, iap);
1339 char *fname, int flen, struct iattr *iap,
1372 return nfsd_create_locked(rqstp, fhp, fname, flen, iap, type,
1383 char *fname, int flen, struct iattr *iap,
1399 if (!(iap->ia_valid & ATTR_MODE))
1400 iap->ia_mode = 0;
1459 *truncp = (iap->ia_valid & ATTR_SIZE) && !iap->ia_size;
1462 iap->ia_valid &= ATTR_SIZE;
1492 iap->ia_mode &= ~current_umask();
1494 host_err = vfs_create(dirp, dchild, iap->ia_mode, true);
1502 nfsd_check_ignore_resizing(iap);
1506 iap->ia_valid = ATTR_MTIME|ATTR_ATIME
1509 iap->ia_mtime.tv_sec = v_mtime;
1510 iap->ia_atime.tv_sec = v_atime;
1511 iap->ia_mtime.tv_nsec = 0;
1512 iap->ia_atime.tv_nsec = 0;
1516 err = nfsd_create_setattr(rqstp, resfhp, iap);