66
77#include <linux/slab.h>
88#include <linux/iversion.h>
9+ #include <linux/sched/mm.h>
910#include "delayed-inode.h"
1011#include "disk-io.h"
1112#include "transaction.h"
@@ -801,11 +802,14 @@ static int btrfs_insert_delayed_item(struct btrfs_trans_handle *trans,
801802 struct btrfs_delayed_item * delayed_item )
802803{
803804 struct extent_buffer * leaf ;
805+ unsigned int nofs_flag ;
804806 char * ptr ;
805807 int ret ;
806808
809+ nofs_flag = memalloc_nofs_save ();
807810 ret = btrfs_insert_empty_item (trans , root , path , & delayed_item -> key ,
808811 delayed_item -> data_len );
812+ memalloc_nofs_restore (nofs_flag );
809813 if (ret < 0 && ret != - EEXIST )
810814 return ret ;
811815
@@ -933,6 +937,7 @@ static int btrfs_delete_delayed_items(struct btrfs_trans_handle *trans,
933937 struct btrfs_delayed_node * node )
934938{
935939 struct btrfs_delayed_item * curr , * prev ;
940+ unsigned int nofs_flag ;
936941 int ret = 0 ;
937942
938943do_again :
@@ -941,7 +946,9 @@ static int btrfs_delete_delayed_items(struct btrfs_trans_handle *trans,
941946 if (!curr )
942947 goto delete_fail ;
943948
949+ nofs_flag = memalloc_nofs_save ();
944950 ret = btrfs_search_slot (trans , root , & curr -> key , path , -1 , 1 );
951+ memalloc_nofs_restore (nofs_flag );
945952 if (ret < 0 )
946953 goto delete_fail ;
947954 else if (ret > 0 ) {
@@ -1008,6 +1015,7 @@ static int __btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
10081015 struct btrfs_key key ;
10091016 struct btrfs_inode_item * inode_item ;
10101017 struct extent_buffer * leaf ;
1018+ unsigned int nofs_flag ;
10111019 int mod ;
10121020 int ret ;
10131021
@@ -1020,7 +1028,9 @@ static int __btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
10201028 else
10211029 mod = 1 ;
10221030
1031+ nofs_flag = memalloc_nofs_save ();
10231032 ret = btrfs_lookup_inode (trans , root , path , & key , mod );
1033+ memalloc_nofs_restore (nofs_flag );
10241034 if (ret > 0 ) {
10251035 btrfs_release_path (path );
10261036 return - ENOENT ;
@@ -1071,7 +1081,10 @@ static int __btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
10711081
10721082 key .type = BTRFS_INODE_EXTREF_KEY ;
10731083 key .offset = -1 ;
1084+
1085+ nofs_flag = memalloc_nofs_save ();
10741086 ret = btrfs_search_slot (trans , root , & key , path , -1 , 1 );
1087+ memalloc_nofs_restore (nofs_flag );
10751088 if (ret < 0 )
10761089 goto err_out ;
10771090 ASSERT (ret );
0 commit comments