From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-f195.google.com ([209.85.223.195]:39606 "EHLO mail-io0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753268AbeFIRaf (ORCPT ); Sat, 9 Jun 2018 13:30:35 -0400 Received: by mail-io0-f195.google.com with SMTP id f1-v6so19388903ioh.6 for ; Sat, 09 Jun 2018 10:30:34 -0700 (PDT) MIME-Version: 1.0 References: <20180607150217.jq757ncqopuimbkd@quack2.suse.cz> <20180608132737.etbkpqg77yz3vhp7@quack2.suse.cz> In-Reply-To: From: Linus Torvalds Date: Sat, 9 Jun 2018 10:30:23 -0700 Message-ID: Subject: Re: [GIT PULL] Fsnotify cleanups To: Amir Goldstein Cc: Jan Kara , linux-fsdevel Content-Type: text/plain; charset="UTF-8" Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Fri, Jun 8, 2018 at 11:57 PM Amir Goldstein wrote: > > We embed fsnotify_obj in struct inode and fsnotify_obj_mask in struct mount. So I'd *really* like to see just a pointer, not an embedded struct. Yes, if you get rid of the mask from the embedded struct (so that it only contains a pointer), you do get rid of the odd alignment issues and the need for "packed". But from previous experience, once you embed a structure, that structure tends to grow. Because it can, and it's so convenient. Suddently it has a spinlock in it too etc. So if you can make do with just the pointer, it would actually be nicer to expose it as such. Then you can also avoid the header file dependency chain, because you can just pre-declare the structure (like it does now) and struct fsnotify_mark_connector; .. struct fsnotify_mark_connector __rcu *i_fsnotify_marks; in the inode. That way the core header files don't need to worry about the fsnotify details, and don't need to include fsnotify headers. And we can do inode packing without having to know (not that it happens all that often - everybody would *love* to shrink the inode structure, but it's just hard. Because everybody also wants to put their own data into the inode ..) Can't the generalization code just take a pointer to a __rcu pointer to fsnotify_mark_connector, obviating the need for the fsnotify_obj structure definition? Linus