[PATCH] fixup! detect_fs: use device instead of file

Peter Mamonov pmamonov at gmail.com
Fri Oct 9 04:11:07 PDT 2015


On Fri, 9 Oct 2015 08:31:49 +0200
Sascha Hauer <s.hauer at pengutronix.de> wrote:

> On Wed, Oct 07, 2015 at 06:52:57PM +0300, Peter Mamonov wrote:
> > ---
> >  fs/fs.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/fs/fs.c b/fs/fs.c
> > index c041e41..6283cea 100644
> > --- a/fs/fs.c
> > +++ b/fs/fs.c
> > @@ -1201,7 +1201,7 @@ EXPORT_SYMBOL(register_fs_driver);
> >  
> >  static const char *detect_fs(const char *filename)
> >  {
> > -	enum filetype type = cdev_detect_type(filename);
> > +	enum filetype type = cdev_detect_type(basename(filename));
> 
> basename is not so nice since we do not know whether the the part of
> the path we drop is really what we expect. Can we rather have a:
> 
> 	if (!strncmp(filename, "/dev/", 5))
> 		filename += 5;

What if devfs is mounted somehere else (not on /dev)?

Let me clarify the situation. After applying "detect_fs: use device
instead of file" the mount command becomes completely broken for me,
since detect_fs() is supplied with the full path to the device file,
while cdev_by_name() expects device file name rather than full path:

static const char *detect_fs(const char *filename)
{
	enum filetype type = cdev_detect_type(filename);
	...
	if (type == filetype_unknown)
		return NULL;
	...
}
struct cdev *cdev_by_name(const char *filename)
{
	struct cdev *cdev;

	list_for_each_entry(cdev, &cdev_list, list) {
		if (!strcmp(cdev->name, filename)) <<<<<<< NO MATCH
			return cdev;
	}
	return NULL;
}
struct cdev {
	...
	char *name; /* filename under /dev/ */
	...
}

Can you explain how could it work for Vicente:
http://lists.infradead.org/pipermail/barebox/2015-October/024832.html
?

Peter

> 
> Sascha
> 
> 




More information about the barebox mailing list