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 111da177e4SLinus Torvalds #include "hfs_fs.h" 121da177e4SLinus Torvalds 131da177e4SLinus Torvalds /* dentry case-handling: just lowercase everything */ 141da177e4SLinus Torvalds 151da177e4SLinus Torvalds static int hfs_revalidate_dentry(struct dentry *dentry, struct nameidata *nd) 161da177e4SLinus Torvalds { 171da177e4SLinus Torvalds struct inode *inode = dentry->d_inode; 181da177e4SLinus Torvalds int diff; 191da177e4SLinus Torvalds 201da177e4SLinus Torvalds if(!inode) 211da177e4SLinus Torvalds return 1; 221da177e4SLinus Torvalds 231da177e4SLinus Torvalds /* fix up inode on a timezone change */ 241da177e4SLinus Torvalds diff = sys_tz.tz_minuteswest * 60 - HFS_I(inode)->tz_secondswest; 251da177e4SLinus Torvalds if (diff) { 261da177e4SLinus Torvalds inode->i_ctime.tv_sec += diff; 271da177e4SLinus Torvalds inode->i_atime.tv_sec += diff; 281da177e4SLinus Torvalds inode->i_mtime.tv_sec += diff; 291da177e4SLinus Torvalds HFS_I(inode)->tz_secondswest += diff; 301da177e4SLinus Torvalds } 311da177e4SLinus Torvalds return 1; 321da177e4SLinus Torvalds } 331da177e4SLinus Torvalds 34e16404edSAl Viro const struct dentry_operations hfs_dentry_operations = 351da177e4SLinus Torvalds { 361da177e4SLinus Torvalds .d_revalidate = hfs_revalidate_dentry, 371da177e4SLinus Torvalds .d_hash = hfs_hash_dentry, 381da177e4SLinus Torvalds .d_compare = hfs_compare_dentry, 391da177e4SLinus Torvalds }; 401da177e4SLinus Torvalds 41