2018-01-20 23:10:04 +01:00
|
|
|
SPDX-License-Identifier: GPL-2.0
|
2016-10-23 14:10:48 +02:00
|
|
|
diff --git a/fs/inode.c b/fs/inode.c
|
2018-01-20 23:10:04 +01:00
|
|
|
index d1e35b5..97e6515 100644
|
2016-10-23 14:10:48 +02:00
|
|
|
--- a/fs/inode.c
|
|
|
|
+++ b/fs/inode.c
|
2018-01-20 23:10:04 +01:00
|
|
|
@@ -856,6 +856,8 @@ unsigned int get_next_ino(void)
|
2016-10-23 14:10:48 +02:00
|
|
|
unsigned int *p = &get_cpu_var(last_ino);
|
|
|
|
unsigned int res = *p;
|
|
|
|
|
|
|
|
+start:
|
|
|
|
+
|
|
|
|
#ifdef CONFIG_SMP
|
|
|
|
if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
|
|
|
|
static atomic_t shared_last_ino;
|
2018-01-20 23:10:04 +01:00
|
|
|
@@ -868,7 +870,7 @@ unsigned int get_next_ino(void)
|
2016-10-23 14:10:48 +02:00
|
|
|
res++;
|
|
|
|
/* get_next_ino should not provide a 0 inode number */
|
|
|
|
if (unlikely(!res))
|
|
|
|
- res++;
|
|
|
|
+ goto start;
|
|
|
|
*p = res;
|
|
|
|
put_cpu_var(last_ino);
|
|
|
|
return res;
|