mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-29 05:18:00 +00:00
util: Update kdev_to_odev to respect BITS_PER_LONG
Depending on BITS_PER_LONG userspace representation of dev_t may vary, so we need to choose proper encoding. Signed-off-by: Igor Sukhih <igor@parallels.com> Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
59c43e481e
commit
647207714a
@ -220,9 +220,17 @@ static inline u32 kdev_minor(u32 kdev)
|
||||
static inline dev_t kdev_to_odev(u32 kdev)
|
||||
{
|
||||
/*
|
||||
* New kernels envcode devices in a new form
|
||||
* New kernels encode devices in a new form.
|
||||
* See kernel's fs/stat.c for details, there
|
||||
* choose_32_64 helpers which are the key.
|
||||
*/
|
||||
return (kdev_major(kdev) << 8) | kdev_minor(kdev);
|
||||
unsigned major = kdev_major(kdev);
|
||||
unsigned minor = kdev_minor(kdev);
|
||||
#if BITS_PER_LONG == 32
|
||||
return (major << 8) | minor;
|
||||
#else
|
||||
return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);
|
||||
#endif
|
||||
}
|
||||
|
||||
int copy_file(int fd_in, int fd_out, size_t bytes);
|
||||
|
Loading…
x
Reference in New Issue
Block a user