aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/err.h
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2010-03-01 18:16:56 -0500
committerSage Weil <sage@newdream.net>2010-03-01 18:28:02 -0500
commite9964c102312967a4bc1fd501cb628c4a3b19034 (patch)
tree7bccb0c4e29d94baaf8c30e008ec5aebdccf9c57 /include/linux/err.h
parent7af8f1e4aa86720840d3318e4dc225c3c7e5a6d0 (diff)
ceph: fix flush_dirty_caps race with caps migration
The flush_dirty_caps() used to loop over the first entry of the cap_dirty dirty list on the assumption that after calling ceph_check_caps() it would be removed from the list. This isn't true for caps that are being migrated between MDSs, where we've received the EXPORT but not the IMPORT. Instead, do a safe list iteration, and pin the next inode on the list via the CEPH_I_NOFLUSH flag. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'include/linux/err.h')
0 files changed, 0 insertions, 0 deletions
n> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef _TIPC_REF_H #define _TIPC_REF_H int tipc_ref_table_init(u32 requested_size, u32 start); void tipc_ref_table_stop(void); u32 tipc_ref_acquire(void *object, spinlock_t **lock); void tipc_ref_discard(u32 ref); void *tipc_ref_lock(u32 ref); void *tipc_ref_deref(u32 ref); #endif