11da177e4SLinus Torvalds /* 21da177e4SLinus Torvalds * linux/fs/hfs/sysdep.c 31da177e4SLinus Torvalds * 41da177e4SLinus Torvalds * Copyright (C) 1996 Paul H. Hargrove 51da177e4SLinus Torvalds * (C) 2003 Ardis Technologies <roman@ardistech.com> 61da177e4SLinus Torvalds * This file may be distributed under the terms of the GNU General Public License. 71da177e4SLinus Torvalds * 81da177e4SLinus Torvalds * This file contains the code to do various system dependent things. 91da177e4SLinus Torvalds */ 101da177e4SLinus Torvalds 1134286d66SNick Piggin #include <linux/namei.h> 121da177e4SLinus Torvalds #include "hfs_fs.h" 131da177e4SLinus Torvalds 141da177e4SLinus Torvalds /* dentry case-handling: just lowercase everything */ 151da177e4SLinus Torvalds hfs_revalidate_dentry(struct dentry * dentry,unsigned int flags)160b728e19SAl Virostatic int hfs_revalidate_dentry(struct dentry *dentry, unsigned int flags) 171da177e4SLinus Torvalds { 1834286d66SNick Piggin struct inode *inode; 191da177e4SLinus Torvalds int diff; 201da177e4SLinus Torvalds 210b728e19SAl Viro if (flags & LOOKUP_RCU) 2234286d66SNick Piggin return -ECHILD; 2334286d66SNick Piggin 242b0143b5SDavid Howells inode = d_inode(dentry); 251da177e4SLinus Torvalds if(!inode) 261da177e4SLinus Torvalds return 1; 271da177e4SLinus Torvalds 281da177e4SLinus Torvalds /* fix up inode on a timezone change */ 291da177e4SLinus Torvalds diff = sys_tz.tz_minuteswest * 60 - HFS_I(inode)->tz_secondswest; 301da177e4SLinus Torvalds if (diff) { 31*7305586aSJeff Layton struct timespec64 ctime = inode_get_ctime(inode); 32*7305586aSJeff Layton 33*7305586aSJeff Layton inode_set_ctime(inode, ctime.tv_sec + diff, ctime.tv_nsec); 341da177e4SLinus Torvalds inode->i_atime.tv_sec += diff; 351da177e4SLinus Torvalds inode->i_mtime.tv_sec += diff; 361da177e4SLinus Torvalds HFS_I(inode)->tz_secondswest += diff; 371da177e4SLinus Torvalds } 381da177e4SLinus Torvalds return 1; 391da177e4SLinus Torvalds } 401da177e4SLinus Torvalds 41e16404edSAl Viro const struct dentry_operations hfs_dentry_operations = 421da177e4SLinus Torvalds { 431da177e4SLinus Torvalds .d_revalidate = hfs_revalidate_dentry, 441da177e4SLinus Torvalds .d_hash = hfs_hash_dentry, 451da177e4SLinus Torvalds .d_compare = hfs_compare_dentry, 461da177e4SLinus Torvalds }; 471da177e4SLinus Torvalds 48