Lines Matching refs:inode
139 static inline void copy_attributes_from_inode(struct inode *inode,
142 struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
145 attrs->owner = from_kuid(&init_user_ns, inode->i_uid);
150 attrs->group = from_kgid(&init_user_ns, inode->i_gid);
158 attrs->atime = (time64_t)inode->i_atime.tv_sec;
165 attrs->mtime = (time64_t)inode->i_mtime.tv_sec;
179 attrs->perms = ORANGEFS_util_translate_mode(inode->i_mode);
196 static void orangefs_make_bad_inode(struct inode *inode)
198 if (is_root_handle(inode)) {
201 * can't afford to lose the inode operations and such
205 "*** NOT making bad root inode %pU\n",
206 get_khandle_from_ino(inode));
209 "*** making bad inode %pU\n",
210 get_khandle_from_ino(inode));
211 make_bad_inode(inode);
215 static int orangefs_inode_is_stale(struct inode *inode,
218 struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
221 * If the inode type or symlink target have changed then this
222 * inode is stale.
224 if (type == -1 || inode_wrong_type(inode, type)) {
225 orangefs_make_bad_inode(inode);
230 orangefs_make_bad_inode(inode);
236 int orangefs_inode_getattr(struct inode *inode, int flags)
238 struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
243 gossip_debug(GOSSIP_UTILS_DEBUG, "%s: called on inode %pU flags %d\n",
244 __func__, get_khandle_from_ino(inode), flags);
247 spin_lock(&inode->i_lock);
250 orangefs_inode->attr_valid || inode->i_state & I_DIRTY_PAGES) {
252 spin_unlock(&inode->i_lock);
253 write_inode_now(inode, 1);
256 spin_unlock(&inode->i_lock);
259 spin_unlock(&inode->i_lock);
276 get_interruptible_flag(inode));
281 spin_lock(&inode->i_lock);
284 orangefs_inode->attr_valid || inode->i_state & I_DIRTY_PAGES) {
286 spin_unlock(&inode->i_lock);
287 write_inode_now(inode, 1);
290 if (inode->i_state & I_DIRTY_PAGES) {
301 ret = orangefs_inode_is_stale(inode,
314 inode->i_flags = orangefs_inode_flags(&new_op->
319 inode->i_size = inode_size;
320 inode->i_blkbits = ffs(new_op->downcall.resp.getattr.
322 inode->i_bytes = inode_size;
323 inode->i_blocks =
329 inode->i_size = PAGE_SIZE;
330 inode_set_bytes(inode, inode->i_size);
332 set_nlink(inode, 1);
336 inode->i_size = (loff_t)strlen(new_op->
345 inode->i_link = orangefs_inode->link_target;
351 orangefs_make_bad_inode(inode);
356 inode->i_uid = make_kuid(&init_user_ns, new_op->
358 inode->i_gid = make_kgid(&init_user_ns, new_op->
360 inode->i_atime.tv_sec = (time64_t)new_op->
362 inode->i_mtime.tv_sec = (time64_t)new_op->
364 inode_set_ctime(inode,
367 inode->i_atime.tv_nsec = 0;
368 inode->i_mtime.tv_nsec = 0;
370 /* special case: mark the root inode as sticky */
371 inode->i_mode = type | (is_root_handle(inode) ? S_ISVTX : 0) |
378 spin_unlock(&inode->i_lock);
384 int orangefs_inode_check_changed(struct inode *inode)
386 struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
390 gossip_debug(GOSSIP_UTILS_DEBUG, "%s: called on inode %pU\n", __func__,
391 get_khandle_from_ino(inode));
401 get_interruptible_flag(inode));
405 ret = orangefs_inode_is_stale(inode,
417 int orangefs_inode_setattr(struct inode *inode)
419 struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
427 spin_lock(&inode->i_lock);
431 copy_attributes_from_inode(inode,
435 spin_unlock(&inode->i_lock);
439 spin_unlock(&inode->i_lock);
442 get_interruptible_flag(inode) | ORANGEFS_OP_WRITEBACK);
446 orangefs_make_bad_inode(inode);