From mboxrd@z Thu Jan 1 00:00:00 1970 From: abhi.c.pawar@gmail.com (Abhijit Pawar) Date: Thu, 25 Oct 2012 09:40:36 +0530 Subject: set_super_anon in fs/super.c In-Reply-To: References: <1350997431.22222.2.camel@apawar-f16.cybage.com> <1351000807.22222.18.camel@apawar-f16.cybage.com> Message-ID: <5088BBBC.3050409@gmail.com> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On 10/24/2012 01:50 PM, Rohan Puri wrote: > Look inline for comments. > > On Tue, Oct 23, 2012 at 7:30 PM, Abhijit Chandrakant Pawar > > wrote: > > Hi Rohan, > > > On Tue, 2012-10-23 at 18:47 +0530, Rohan Puri wrote: >> >> >> On Tue, Oct 23, 2012 at 6:33 PM, Abhijit Chandrakant Pawar >> > wrote: >> >> I am working on the layered file systems. I came across a >> function called set_super_anon. >> This is a callback to the sget function to compare the >> superblock . This function accepts two parameters. first is >> superblock * and second is void *. If you look at the >> definition of this function, the void* is never used. >> Many filesystem uses this function when they are mounting the >> superblock. Some pass NULL and some pass actual data.I have >> looked till 2.6.31 but there isnt any trace of the usage of >> second parameter. >> >> If it is never used then why its added to the function param >> list? Is there any historical reason during the older kernel >> days? >> >> Regards, >> Abhijit Pawar >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies at kernelnewbies.org >> >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> >> >> Hi Abhijit, >> >> See the issue is this function is passed as an argument to >> sget(), now their are many other file-systems that defined their >> own set_super function & for that they need data argument where >> they usually pass mount-related data >> >> For eg. see the definition and usage of function nfs_set_super(). >> >> So, the prototype of the sget() should contain function ptr >> (set_super()) and this function ptr should have data argument >> also. Now one usage can imply NO USE of the data parameter, which >> is set_super_anon, but other file-systems may require, so the >> sget() prototype should be generic to support, both the cases. >> > Yes... thats what I thought. many are passing data > un-necessarily to this function wherein they already have captured > the required information for their purpose in their own defined > function. > > Do you mean to say, each fs's own set_super function makes a call to > set_anon_super() with data parameter as their specific data, but > set_anon_super makes no use of it? > > > Wouldnt that cause stack to store the value un-necessarily? It > would be good if everybody passes NULL as second param. > > Yes, each fs's set_super, if makes a call to anon_super() should pass > NULL as the second parameter(void *data) since anon_super doesnt make > use of this parameter, need for this parameter just arises to match > the prototype of sget()'s function ptr agrument. Also do remember the > pointer to this data is passed, so only a word-size of extra stack is > utilized when a call to this function is made. I have made a patch for those filesystems and submitted to the kernel list. >> - Rohan > > > - Rohan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20121025/fc0df94d/attachment.html