Hello, oh, you replied in this thread. On (01/18/16 15:32), Minchan Kim wrote: > > free_obj = obj_malloc(d_page, class, handle); > > zs_object_copy(free_obj, used_obj, class); > > index++; > > + /* This also effectively unpins the handle */ > > record_obj(handle, free_obj); > > - unpin_tag(handle); > > obj_free(pool, class, used_obj); > > } > > > > But I'd still recommend WRITE_ONCE in record_obj(). And I'm not even sure it's > > Thanks for the reivew. Yeah, we need WRITE_ONCE in record_obj but > your version will not work. IMHO, WRITE_ONCE can prevent store-tearing > but it couldn't prevent reordering. IOW, we need some barrier as unlock > and clear_bit_unlock includes it. > So, we shouldn't omit unpin_tag there. but there is only one store operation after this patch. static void record_obj(unsigned long handle, unsigned long obj) { *(unsigned long *)handle = obj; } does the re-ordering problem exist? zs_free() will see the old pinned handle and spin, until record_obj() from migrate. -ss > > safe on all architectures to do a simple overwrite of a word against somebody > > else trying to lock a bit there? > > Hmm, I think it shouldn't be a problem. It's word-alinged, word-sized > store so it should be atomic. > > As other example, we have been used lock_page for a bit of page->flags > and used other bits in there with __set_bit(ie, __SetPageXXX). > I guess it's same situation with us just except we are spinning there. > But it is worth to dobule check so need to help lock guys. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>