On Fri, Jun 10, 2016 at 3:19 PM, Arnd Bergmann arnd@arndb.de wrote:
On Thursday, June 9, 2016 11:45:01 AM CEST Linus Torvalds wrote:
On Wed, Jun 8, 2016 at 10:04 PM, Deepa Dinamani deepa.kernel@gmail.com wrote:
CURRENT_TIME_SEC and CURRENT_TIME are not y2038 safe. current_fs_time() will be transitioned to be y2038 safe along with vfs.
current_fs_time() returns timestamps according to the granularities set in the super_block.
All existing users and all the ones in this patch (and the others too, although I didn't go through them very carefully) really would prefer just passing in the inode directly, rather than the superblock.
So I don't want to add more users of this broken interface. It was a mistake to use the superblock. The fact that the time granularity exists there is pretty much irrelevant. If every single user wants to use an inode pointer, then that is what the function should get.
I guess it would help to give the function a new name in the process, if only to avoid possible conflicts. That new name of course needs to be at least as intuitive as the old one. How about
struct timespec fs_timestamp(struct inode *);
Would moving the function to fs/ directory (filesystems.c/ super.c / inode.c) and calling it current_time() or fs_current_time() make sense? The declaration is already part of fs.h.
This is actually a vfs function. And, the time functions it uses are already exported. Leaving it in the time.c by renaming to current_time() would be confusing in spite of the struct inode* argument.
-Deepa